Ho un sito Web in cui varie parti parse request URLs by themselves e altre no (ad esempio un forum vBulletin). Il .htaccess che devo inviare richieste agli script appropriapi è:Alcuni RewriteCond influiscono su più regole
# 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]
Questo non funziona come mi aspettavo. Ho dimenticato che le condizioni di riscrittura sono applicate solo alla prima regola che le segue. La domanda è Come posso applicare quelli RewriteCond a tutte quelle regole senza dover copypaste 4 volte?
ciò che va male è questo:
- /negozio/esempio è riscritto per /shop/shop.php
/shop/shop.php è poi di nuovo riscritto per/negozio /shop.php (leggi: abbiamo un ciclo infinito). Questo non accadrebbe se questa condizione è stata applicata a questa regola di riscrittura, perché /shop/shop.php è un file vero e proprio:
RewriteCond% {} REQUEST_FILENAME -f
Quindi sì ...
Grazie per il tempo di spiegare la risposta per il resto di noi! +1 –
È piuttosto interessante, ma anche un po 'complicato, se qualcuno aggiunge una regola di riscrittura in un secondo momento e dimentica di aggiornare il numero di righe da saltare, si ottiene un comportamento indesiderato. – Leven