2015-05-17 27 views
6
RewriteRule ^([a-z]).php$ /index.php?zig=$1 [NC,L] # working 

Ta reguła działa poprawnie. AleRewriteRule nie działa z plusem (+ lub *)

RewriteRule ^([a-z]+).php$ /index.php?zig=$1 [NC,L] # not working 

lub

RewriteRule ^([a-z]\+).php$ /index.php?zig=$1 [NC,L] # not working 

nie działa. Różnica jest (+). Jak korzystać z kodu + w powyższym kodzie?

+0

Wskazówka: w opisach problemów należy unikać wyrażenia "nie działa". To zbyt ogólnikowe. Zamiast tego opisz dokładnie, co się dzieje (z dowodami!) I wyjaśnij, jak to się różni od tego, co chciałeś zrobić. Nie możemy odgadnąć, co chcemy osiągnąć z kodu, który według własnego uznania, nie osiąga tego! :) –

Odpowiedz

3

Ta reguła jest w porządku:

RewriteRule ^([a-z]+)\.php$ /index.php?zig=$1 [NC,L] 

ale będzie tworzyć nieskończoną pętlę ponieważ przepisany URI /index.php też pasuje do wzorca wyrażenia regularnego. Aby temu zapobiec trzeba kilka zmian jak zapobieganie plików/katalogów z tego przepisać i uciec z kropka, ponieważ jest to specjalny regex meta znak:

# If the request is not for a valid directory 
RewriteCond %{REQUEST_FILENAME} !-d 
# If the request is not for a valid file 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([a-z]+)\.php$ index.php?zig=$1 [QSA,NC,L] 

QSA flag (Query String Dołącz) zachowuje istniejące parametry zapytania podczas dodawania nowy.

+1

Dziękuję. To działa. –

Powiązane problemy