Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: .htaccess źle akceptuje Rewrite Rule
Forum PHP.pl > Forum > Serwery WWW > Apache
Asmox
Nie wiem skąd się coś takiego wzięło. Chciałbym normalnie wykorzystać ModRewrite, ale .htaccess coś mi miesza... Mam plik index.php, który wyświetla zawartość tablicy $_GET. Kiedy .htaccess jest ustawiony tak:
Kod
Options FollowSymLinks
RewriteEngine On

RewriteRule ^(.*)/$ index.php?p=$1 [L]

To wpisywanie w przeglądarce http://localhost/folder/abc daje normalny rezultat:
Kod
Array ( [p] => o_mnie )

Natomiast gdy zmienię wzór, aby nie koniecznie uwzględniał ukośniki lub wcale:
RewriteRule ^(.*)/?$ index.php?p=$1 [L]
RewriteRule ^(.*)$ index.php?p=$1 [L]
to wtedy pojawia się ZONK:
Kod
Array ( [p] => index.php )

Jest to bardzo uciążliwe i ogólnie wyprowadza mnie z równowagi, ponieważ przy zmienianiu stron przez URL nie chce mi się wpisywać tego ukośnika na końcu (a poza tym trudniej zapamiętać adres Z UKOŚNIKIEM na końcu niż bez)
Wie ktoś co robić?
erix
Daj var_dump" title="Zobacz w manualu PHP" target="_manual na $_GET.

To cały htaccess?
Asmox
Cytat(erix @ 13.07.2009, 22:03:32 ) *

To samo. Zapomniałem napisać, że ta wypisywana zawartość tablicy $_GET to było zwyczajne print_r.
Cytat(erix @ 13.07.2009, 22:03:32 ) *
To cały htaccess?

Tak.

Dzisiaj zauważyłem jeszcze jednego ZONKa. Mianowicie jeżeli adres strony przejdzie przez regułę RewriteRule, to serwer kompletnie olewa mi style (CSS). Zaczynam się zastanawiać, czy to właśnie nie jest wina serwera.
erix
Cytat
to serwer kompletnie olewa mi style (CSS). Zaczynam się zastanawiać, czy to właśnie nie jest wina serwera

To wina Twojego sposobu dołączania i opisywania reguł. Twoje - w tej chwili - przekazują wszystkie żądania do pliku php. Poszukaj o RewriteCond, znajdziesz rozwiązanie.

Cytat
To samo. Zapomniałem napisać, że ta wypisywana zawartość tablicy $_GET to było zwyczajne print_r.

Spróbuj dopisać
Kod
RewriteBase /

zaraz po aktywacji przepisywania.
Asmox
Cytat(erix @ 14.07.2009, 17:34:40 ) *
To wina Twojego sposobu dołączania i opisywania reguł. Twoje - w tej chwili - przekazują wszystkie żądania do pliku php. Poszukaj o RewriteCond, znajdziesz rozwiązanie.

Poszukałem, chyba chodzi o REQUEST_URI, ale nie wiem jak zrobić, żeby nie przekierowywał plików z folderu public/. Na razie mam taki .htaccess:
Kod
Options FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_URI} !public/
RewriteRule ^(.*)/$ index.php?a=$1 [L]

Cytat(erix @ 14.07.2009, 17:34:40 ) *
Spróbuj dopisać
Kod
RewriteBase /

zaraz po aktywacji przepisywania.

Dopisywałem, nawet w różnych innych miejscach i nic.
erix
Z mojego DRY:
Kod
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
Asmox
Dzięki, chyba działa. Może i w końcu coś się sypnie, ale ponieważ tylko Ty mi pomagałeś, dam ci 'punkta'.
P.S.:
Cytat
Z mojego DRY:

Co to jest DRY? mellow.gif
erix
Zobacz sobie w Wikipedii. tongue.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-2024 Invision Power Services, Inc.