2014-05-13 14 views
7

Jaka jest różnica między [L] i [end]?
last i end są takie same, prawda?.htaccess [L] i [koniec] flags

w moim .htaccess mam

RewriteEngine On 
RewriteBase/

# I use this only to test my $_SERVER variables 
RewriteRule ^phpinfo phpinfo.php [QSA,L] 

RewriteRule ^(.*)$ index.php?data=$1 [QSA,L] 

i zachowanie zarówno end i L jest taka sama. Przypuszczam, że w bardziej skomplikowanym przykładzie nie będzie, więc możesz dać mi taki przykład?

Z docs:

[L] Flaga powoduje mod_rewrite zatrzymania przetwarzania zbioru reguł. W większości kontekstów oznacza to, że jeśli reguła zostanie dopasowana, nie zostaną przetworzone żadne dalsze reguły .

i

Stosując [END] flaga przerywa nie tylko obecny rundę przepisać przetwarzania (na przykład: [L]) ale także zapobiega się późniejszej przepisać przetwarzania występowaniu per katalogu (htaccess) kontekst.

Co to oznacza?

+0

Zobacz [moje wyjaśnienie tutaj] (https://stackoverflow.com/a/47470720/444255). Jeśli nie widzisz korzyści z wielokrotnych rund lub przepisywania, zawsze umieszczaj KONIEC do końca. :-) –

Odpowiedz

5

Dotyczy konfiguracji globalnej apache. Jeśli używasz [L] w httpd.conf, nadal istnieje szansa na zastosowanie pewnych reguł w .htaccess. Ale jeśli używasz [END], gra się kończy i .htaccess nie może dodać nic.

+0

Czy flaga 'L' zapobiega wszelkim regułom, które napisałem? –

+3

[L] zapobiega dalszym regułom na tym samym poziomie, [END] zapobiega regułom na tym samym i wyższym poziomie. – JimiDini