Mam stronę internetową, gdzie różne części parse request URLs by themselves, a niektóre nie (np. Forum vBulletin). .htaccess Mam do wysyłania żądań do odpowiednich skryptów jest:Czy niektóre RewriteCond wpływają na wiele zasad
# wiki, shop, admin
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !(.*)\.js
RewriteRule ^wiki/(.*)$ w/index.php?title=$1 [PT,L,QSA]
RewriteRule ^wiki/*$ wiki/ [L,QSA]
RewriteRule ^shop/ /shop/shop.php [NC,L]
RewriteRule ^forum/admincp/pkr/ /forum/admincp/pkr/pkr.php [NC,L]
To nie działa tak, jak się spodziewałem. Zapomniałem, że warunki przepisywania są stosowane tylko do pierwszej reguły, która następuje po nich. Pytanie brzmi: W jaki sposób mogę zastosować te poprawki do tych wszystkich zasad bez konieczności ich 4-krotnego kopiowania?
Co idzie źle to:
- /sklep/przykładem jest przepisany do /shop/shop.php
/shop/shop.php jest następnie przepisywane ponownie do sklepu//shop.php (czytaj: mamy nieskończoną pętlę). To się nie stanie, jeśli warunek ten został zastosowany do tej reguły przepisywania, bo /shop/shop.php jest rzeczywisty plik:
RewriteCond% {REQUEST_FILENAME} -f
Więc tak ...
Dzięki za poświęcenie czasu na wyjaśnienie odpowiedzi dla nas! +1 –
Jest to całkiem fajne, ale także nieco skomplikowane, jeśli ktoś doda regułę przepisywania później i zapomni zaktualizować liczbę linii, aby pominąć niepożądane zachowanie. – Leven