Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mod rewrite] Prolem z poprawnym działaniem reguł
Forum PHP.pl > Forum > Serwery WWW > Apache
.chudy.
Witam, mam problem z poprawnym działaniem mod_rewrite. Korzystam z KohanaPHP i chce usunąć z urla index.php/shop , oraz móc korzystać z panelu admina wykorzystując krótki adres /admin. Niestety jak jak mam włączone oby dwie reguły, to cały rewrite nie działa. Pojawiają mi się dziwne błędy raz w logach miałem, komunikat że przekierowanie wpadło w pętle. Próbowałem różnych sposób i niestety samemu nie mogę sobie z tym poradzić. W tej chwili mój htaccess wygląda następująco

CODE
RewriteEngine On
#RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^admin$ index.php/admin [L]
RewriteRule ^(.*)$ index.php/shop/$1 [L]
zegarek84
najlepiej to powinieneś mieć na końcu gdyż przekierowuje Ci jeśli nic nie znajdzie - jeśli przekierowanie nie poprawne lub coś w tym stylu:
Kod
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
... i reguła gdy powyższe spełnione
no i co najmniej na końcu jeden enter


same reguły htaccess po wykonaniu się wykonują się po raz kolejny by sprawdzić czy nie ma kolejnego dopasowania więc nie mogą za bardzo pasować reguły wyników do reguł szukania ;p - akurat tutaj najpewniej to Ci zapętla:
Kod
RewriteRule ^admin$ index.php/admin [L] //nawet jeśli ta linijka była by poprawna to przy następnym wglądzie w htaccess dopasuje do drugiej linii...
RewriteRule ^(.*)$ index.php/shop/$1 [L]

jak widzisz jedno pasuje do drugiego....

mało tego - zapętla się u Ciebie sama ta jedna reguła:
Kod
RewriteRule ^admin$ index.php/admin [L]

dokładnie nie wiem jaki masz adres i co chcesz osiągnąć ale jak już napisałem wynik przepisanego adresu nie powinwywać się do reguł szukanych gdyż plik jest przeglądany od początku z czego wynika zapętlenie....

tak więc u Ciebie powinna być mniej więcej taka kolejność:
Kod
RewriteEngine On
RewriteBase /
RewriteRule ^admin$ index.php/admin [L] // przy czym tą regułę na pewno ewidentnie trzeba zmienić - nie znam adresów więc nie jestem w stanie z palca wróżyć
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/shop/$1 [L]

przy czym jeśli chcesz się upewnić gdzie to Ci wszystko przekierowuje gdy ma się małe błędy o ile się nie zapętli to używaj jeszcze modyfikatora którego potem usuniesz [R=301,L]

no i przy tych ostatnich 3 linijkach to przekierowanie też jest trochu bez sensu gdyż powinno być w zasadzie to przekierowanie do tego samego adresu skoro nic nie może znaleść - czyli, np. do komunikatu, że dana strona nie istnieje...

i jeśli dalej nie masz przekierowań to w zasadzie z adresów pseudo statycznych powinno się przekierowywać do adresów php z parametrami get ;p
.chudy.
Wielkie dzięki za pomoc i wytłumaczenie smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.