Devo cambiare il mio .htaccesse ci sono due righe che non capisco.
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
Quando dovrei usare queste linee?
Devo cambiare il mio .htaccesse ci sono due righe che non capisco.
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
Quando dovrei usare queste linee?
Risposte:
Non è il posto giusto per dare un tutorial completo, ma eccolo qui in breve;
RewriteCond significa fondamentalmente "eseguire la prossima RewriteRule solo se questo è vero". Il !-lpercorso è la condizione che la richiesta non sia per un collegamento ( !significa no, -lsignifica collegamento)
La RewriteRule significa fondamentalmente che se la richiesta viene eseguita che corrisponde ^(.+)$(corrisponde a qualsiasi URL tranne la radice del server), verrà riscritta, il index.php?url=$1che significa che una richiesta per olleverrà riscritta come index.php?url=olle).
QSAsignifica che se c'è una stringa di query passata con l'URL originale, verrà aggiunta alla riscrittura ( olle?p=1verrà riscritta come index.php?url=olle&p=1.
L significa che se la regola corrisponde, non elaborare più RewriteRules sotto questa.
Per informazioni più complete su questo, segui i link sopra. Il supporto per la riscrittura può essere un po 'difficile da comprendere, ma ci sono alcuni esempi su StackOverflow da cui imparare.
?a &, rendendo impossibile distinguere tra /page&foobarvs /page?foobar. Come posso impedire a QSA di sostituire ?a &?
Se le seguenti condizioni sono vere, riscrivi l'URL:
Se il nome del file richiesto non è una directory,
RewriteCond %{REQUEST_FILENAME} !-d
e se il nome file richiesto non è un file normale esistente,
RewriteCond %{REQUEST_FILENAME} !-f
e se il nome del file richiesto non è un collegamento simbolico,
RewriteCond %{REQUEST_FILENAME} !-l
quindi riscrivi l'URL nel modo seguente:
prendi l'intero nome del file della richiesta e forniscilo come valore di un parametro di query "url" a index.php. Aggiungi qualsiasi stringa di query dall'URL originale come ulteriori parametri di query (QSA) e interrompi l'elaborazione di questo file .htaccess (L).
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
Un altro esempio:
RewriteRule "/pages/(.+)" "/page.php?page=$1" [QSA]
Con il flag [QSA], una richiesta di
/ pagine / 123? uno = due
sarà mappato a
/page.php?page=123&one=two