[Rozw.] mod_rewrite - ukrywanie index.php w adresie URL

Problemy dotyczące programowania.

Moderatorzy: Moderatorzy, Administratorzy

Awatar użytkownika
Matti
Użytkownik
Posty: 124
Rejestracja: 2005-05-20, 23:42
Lokalizacja: Kraków/Trzebinia

[Rozw.] mod_rewrite - ukrywanie index.php w adresie URL

Post autor: Matti » 2007-11-21, 22:36

Witam serdecznie.

Strasznie się męczę szukając regułek przekierujących przykładowy adres:
http://domena.com/domek --> http://domena.com/index.php/domek

Na pewno będzie:
RewriteEngine on :mrgreen:

Przydało by się jeszcze ukryć to u klienta "[L]"


Gdyby ktoś biegły w temacie coś doradził będę wdzięczny.
Pozdrawiam
Ostatnio zmieniony 2007-11-25, 21:04 przez Matti, łącznie zmieniany 1 raz.

Awatar użytkownika
Zielony
Użytkownik
Posty: 535
Rejestracja: 2005-03-17, 18:22
Lokalizacja: Poznań
Kontakt:

Re: [Rozw.] mod_rewrite - ukrywanie index.php w adresie URL

Post autor: Zielony » 2007-11-21, 23:19

RewriteEngine on
RewriteRule (.*) index.php/$1
Żyję - nie każdemu się zdarza - a we krwi mam chlorofil.
[url=http://scxd.info/][img]http://scxd.info/pub/scxdbar/scxd-bar.png[/img][/url]
[b]Registered User #448882[/b]
[img]http://scxd.info/say/img.php[/img]

Awatar użytkownika
Matti
Użytkownik
Posty: 124
Rejestracja: 2005-05-20, 23:42
Lokalizacja: Kraków/Trzebinia

Re: [Rozw.] mod_rewrite - ukrywanie index.php w adresie URL

Post autor: Matti » 2007-11-22, 20:23

Coś jeszcze chyba muszę dorzucić do podanego przez Ciebie rozwiązania.
Użycie dokładnie tego co podałeś powoduje "Internal server error 500".

Pozdrawiam

Awatar użytkownika
Zielony
Użytkownik
Posty: 535
Rejestracja: 2005-03-17, 18:22
Lokalizacja: Poznań
Kontakt:

Re: [Rozw.] mod_rewrite - ukrywanie index.php w adresie URL

Post autor: Zielony » 2007-11-22, 20:37

Prawdopodobnie wina leży po Twojej stronie, ponieważ wątpię, żebyś miał coś takiego jak index.php/domek. W końcu jak w pliku może być katalog?
Żyję - nie każdemu się zdarza - a we krwi mam chlorofil.
[url=http://scxd.info/][img]http://scxd.info/pub/scxdbar/scxd-bar.png[/img][/url]
[b]Registered User #448882[/b]
[img]http://scxd.info/say/img.php[/img]

topdolar
Użytkownik
Posty: 389
Rejestracja: 2006-10-05, 18:35

Re: [Rozw.] mod_rewrite - ukrywanie index.php w adresie URL

Post autor: topdolar » 2007-11-22, 20:53

Zielony, jednak moze :)

Kod: Zaznacz cały

http://s1.delirium.wp.pl/index.php/strategy/gameobject/action/list_civ/
przykladowy link z gry, czy czasem php5 nie ma takiej opcji

Awatar użytkownika
Sad Mephisto
Administrator
Posty: 2824
Rejestracja: 2004-05-22, 13:24
Lokalizacja: Zabrze
Kontakt:

Re: [Rozw.] mod_rewrite - ukrywanie index.php w adresie URL

Post autor: Sad Mephisto » 2007-11-22, 20:59

Matti, Wywal wszystkie ukrywacze typu [P] i zobacz, jaki adres został wygenerowany. Osobiście obstawiałbym takie rozwiązanie:

Kod: Zaznacz cały

RewriteRule ^(.*)$ http://..../index.php$1
Rozwiązanie zaproponowane przez Zielonego może generować podwójnego slasha po index.php
[i]Thank you for noticing this notice. Now that you've noticed this notice, you may have noticed that this notice is noticably unnoticable.
$ python -c "print int(''.join(map(lambda x: str(len(x)),'Kto z woli i myśli zapragnie Pi spisać cyfry ten zdoła.'.split())))/1e+10"[/i]

Awatar użytkownika
Matti
Użytkownik
Posty: 124
Rejestracja: 2005-05-20, 23:42
Lokalizacja: Kraków/Trzebinia

Re: [Rozw.] mod_rewrite - ukrywanie index.php w adresie URL

Post autor: Matti » 2007-11-22, 21:13

Zielony jeśli chodzi o ten domek to tylko przykład ;-) Testowałem to u siebie na localhost i na innym serwerze ale efekt jest ten sam. Error 500. U mnie wystarczy wpisać localhost i już jest błąd.

Co do przykładu Sada to link wygląda ciekawie:

Kod: Zaznacz cały

http://localhost/index.phpindex.phpindex.phpindex.phpindex.phpindex.php
Ps
Uciąłem dalsze index.php bo było ich więcej.

Awatar użytkownika
Zielony
Użytkownik
Posty: 535
Rejestracja: 2005-03-17, 18:22
Lokalizacja: Poznań
Kontakt:

Re: [Rozw.] mod_rewrite - ukrywanie index.php w adresie URL

Post autor: Zielony » 2007-11-22, 22:13

Przykład Sada zostaje wywołany rekurencyjnie - dlatego tak wygląda adres.

Powiedz nam, w jaki sposób przyjmuje parametry ten skrypt. Czy aby na pewno to jest index.php/parametr?

topdolar: Tam właśnie może być zastosowany mod_rewrite, żeby adres wyglądał w taki sposób. W każdym razie jednak nie wykluczam takiej funkcjonalności PHP 5.
Ostatnio zmieniony 2007-11-22, 22:16 przez Zielony, łącznie zmieniany 1 raz.
Żyję - nie każdemu się zdarza - a we krwi mam chlorofil.
[url=http://scxd.info/][img]http://scxd.info/pub/scxdbar/scxd-bar.png[/img][/url]
[b]Registered User #448882[/b]
[img]http://scxd.info/say/img.php[/img]

Awatar użytkownika
Matti
Użytkownik
Posty: 124
Rejestracja: 2005-05-20, 23:42
Lokalizacja: Kraków/Trzebinia

Re: [Rozw.] mod_rewrite - ukrywanie index.php w adresie URL

Post autor: Matti » 2007-11-22, 22:41

Index.php wywołuje pewien obiekt a on robi coś takiego :

Kod: Zaznacz cały

$this->link_master = explode( '/', substr( $_SERVER['REQUEST_URI'], 1) );
		switch ($this->link_master[1]) {
			case "bla":
				echo "hoho";
                                break;
		}
Nie wydaje mi się żeby to miało jakikolwiek wpływ na mod_rewrite. Chodzi mi o uzyskanie dość przyzwoitych URLi sterowanych jedynie przez index.php.
Ostatnio zmieniony 2007-11-22, 22:44 przez Matti, łącznie zmieniany 1 raz.

Awatar użytkownika
Zielony
Użytkownik
Posty: 535
Rejestracja: 2005-03-17, 18:22
Lokalizacja: Poznań
Kontakt:

Re: [Rozw.] mod_rewrite - ukrywanie index.php w adresie URL

Post autor: Zielony » 2007-11-23, 16:57

A może w ten sposób:
RewriteEngine on
RewriteRule index.php/(.+)$ index.php/$1
RewriteRule ^(.+)$ index.php$1
?
Żyję - nie każdemu się zdarza - a we krwi mam chlorofil.
[url=http://scxd.info/][img]http://scxd.info/pub/scxdbar/scxd-bar.png[/img][/url]
[b]Registered User #448882[/b]
[img]http://scxd.info/say/img.php[/img]

Awatar użytkownika
Matti
Użytkownik
Posty: 124
Rejestracja: 2005-05-20, 23:42
Lokalizacja: Kraków/Trzebinia

Re: [Rozw.] mod_rewrite - ukrywanie index.php w adresie URL

Post autor: Matti » 2007-11-24, 15:48

Nie wiem, może mam coś nie tak z serwerem bo przykład Zielonego też wywala internal server error 500.

Awatar użytkownika
Zielony
Użytkownik
Posty: 535
Rejestracja: 2005-03-17, 18:22
Lokalizacja: Poznań
Kontakt:

Re: [Rozw.] mod_rewrite - ukrywanie index.php w adresie URL

Post autor: Zielony » 2007-11-24, 18:57

Daj nam logi.
Żyję - nie każdemu się zdarza - a we krwi mam chlorofil.
[url=http://scxd.info/][img]http://scxd.info/pub/scxdbar/scxd-bar.png[/img][/url]
[b]Registered User #448882[/b]
[img]http://scxd.info/say/img.php[/img]

Awatar użytkownika
Matti
Użytkownik
Posty: 124
Rejestracja: 2005-05-20, 23:42
Lokalizacja: Kraków/Trzebinia

Re: [Rozw.] mod_rewrite - ukrywanie index.php w adresie URL

Post autor: Matti » 2007-11-24, 20:24

Po wpisaniu adresu http://localhost/bla rewrite.log daje takie komunikaty.

Kod: Zaznacz cały

127.0.0.1 - - [24/Nov/2007:20:18:56 +0100] [localhost/sid#8159d78][rid#82e3550/initial] (3) [per-dir /usr/local/apache2/htdocs/] strip per-dir prefix: /usr/local/apache2/htdocs/bla -> bla
127.0.0.1 - - [24/Nov/2007:20:18:56 +0100] [localhost/sid#8159d78][rid#82e3550/initial] (3) [per-dir /usr/local/apache2/htdocs/] applying pattern 'index.php/(.+)$' to uri 'bla'
127.0.0.1 - - [24/Nov/2007:20:18:56 +0100] [localhost/sid#8159d78][rid#82e3550/initial] (3) [per-dir /usr/local/apache2/htdocs/] strip per-dir prefix: /usr/local/apache2/htdocs/bla -> bla
127.0.0.1 - - [24/Nov/2007:20:18:56 +0100] [localhost/sid#8159d78][rid#82e3550/initial] (3) [per-dir /usr/local/apache2/htdocs/] applying pattern '^(.+)$' to uri 'bla'
127.0.0.1 - - [24/Nov/2007:20:18:56 +0100] [localhost/sid#8159d78][rid#82e3550/initial] (2) [per-dir /usr/local/apache2/htdocs/] rewrite bla -> index.phpbla
127.0.0.1 - - [24/Nov/2007:20:18:56 +0100] [localhost/sid#8159d78][rid#82e3550/initial] (3) [per-dir /usr/local/apache2/htdocs/] add per-dir prefix: index.phpbla -> /usr/local/apache2/htdocs/index.phpbla
127.0.0.1 - - [24/Nov/2007:20:18:56 +0100] [localhost/sid#8159d78][rid#82e3550/initial] (2) [per-dir /usr/local/apache2/htdocs/] strip document_root prefix: /usr/local/apache2/htdocs/index.phpbla -> /index.phpbla
127.0.0.1 - - [24/Nov/2007:20:18:56 +0100] [localhost/sid#8159d78][rid#82e3550/initial] (1) [per-dir /usr/local/apache2/htdocs/] internal redirect with /index.phpbla [INTERNAL REDIRECT]
127.0.0.1 - - [24/Nov/2007:20:18:56 +0100] [localhost/sid#8159d78][rid#82aae38/initial/redir#1] (3) [per-dir /usr/local/apache2/htdocs/] strip per-dir prefix: /usr/local/apache2/htdocs/index.phpbla -> index.phpbla
127.0.0.1 - - [24/Nov/2007:20:18:56 +0100] [localhost/sid#8159d78][rid#82aae38/initial/redir#1] (3) [per-dir /usr/local/apache2/htdocs/] applying pattern 'index.php/(.+)$' to uri 'index.phpbla'
127.0.0.1 - - [24/Nov/2007:20:18:56 +0100] [localhost/sid#8159d78][rid#82aae38/initial/redir#1] (3) [per-dir /usr/local/apache2/htdocs/] strip per-dir prefix: /usr/local/apache2/htdocs/index.phpbla -> index.phpbla
127.0.0.1 - - [24/Nov/2007:20:18:56 +0100] [localhost/sid#8159d78][rid#82aae38/initial/redir#1] (3) [per-dir /usr/local/apache2/htdocs/] applying pattern '^(.+)$' to uri 'index.phpbla'
127.0.0.1 - - [24/Nov/2007:20:18:56 +0100] [localhost/sid#8159d78][rid#82aae38/initial/redir#1] (2) [per-dir /usr/local/apache2/htdocs/] rewrite index.phpbla -> index.phpindex.phpbla
127.0.0.1 - - [24/Nov/2007:20:18:56 +0100] [localhost/sid#8159d78][rid#82aae38/initial/redir#1] (3) [per-dir /usr/local/apache2/htdocs/] add per-dir prefix: index.phpindex.phpbla -> /usr/local/apache2/htdocs/index.phpindex.phpbla
127.0.0.1 - - [24/Nov/2007:20:18:56 +0100] [localhost/sid#8159d78][rid#82aae38/initial/redir#1] (2) [per-dir /usr/local/apache2/htdocs/] strip document_root prefix: /usr/local/apache2/htdocs/index.phpindex.phpbla -> /index.phpindex.phpbla
127.0.0.1 - - [24/Nov/2007:20:18:56 +0100] [localhost/sid#8159d78][rid#82aae38/initial/redir#1] (1) [per-dir /usr/local/apache2/htdocs/] internal redirect with /index.phpindex.phpbla [INTERNAL REDIRECT]
...

Awatar użytkownika
Zielony
Użytkownik
Posty: 535
Rejestracja: 2005-03-17, 18:22
Lokalizacja: Poznań
Kontakt:

Re: [Rozw.] mod_rewrite - ukrywanie index.php w adresie URL

Post autor: Zielony » 2007-11-24, 20:43

W takim razie tak:
RewriteEngine on
RewriteRule index.php/(.+)$ index.php/$1
RewriteRule ^(.+)$ index.php/$1
Żyję - nie każdemu się zdarza - a we krwi mam chlorofil.
[url=http://scxd.info/][img]http://scxd.info/pub/scxdbar/scxd-bar.png[/img][/url]
[b]Registered User #448882[/b]
[img]http://scxd.info/say/img.php[/img]

Awatar użytkownika
Matti
Użytkownik
Posty: 124
Rejestracja: 2005-05-20, 23:42
Lokalizacja: Kraków/Trzebinia

Re: [Rozw.] mod_rewrite - ukrywanie index.php w adresie URL

Post autor: Matti » 2007-11-24, 22:36

Ok zrobiłem kolejny test:
Teraz jest błąd:

Kod: Zaznacz cały

You don't have permission to access /index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/bla/bla/index.php on this server.
Uprawnienia do wszystkich plików w htdocs ustawiłem na 777.

ODPOWIEDZ