Cosa significano queste dichiarazioni nel mio file .htaccess?
-
03-07-2019 - |
Domanda
Sono un principiante di PHP. Qualcuno può dirmi cosa fa ogni riga qui. Ho bisogno di questo? Mi sta dando errori
RewriteCond %{REQUEST_URI} /~([^/]+)/?
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*) /~%1/rewrite.php?p=$1&%{QUERY_STRING} [L]
RewriteCond %{REQUEST_URI} /~([^/]+)/?
RewriteRule ^index\.php?(.*)$ /~%1/rewrite.php?p=%1&%{QUERY_STRING} [L]
#there is no ~ character in the URL
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*) ./rewrite.php?p=$1&%{QUERY_STRING} [L]
RewriteRule ^index\.php?(.*)$ ./rewrite.php?p=$1&%{QUERY_STRING} [L]
#WJ-180 fix
RewriteRule ^resume\.php?(.*)$ ./rewrite.php?p=resume\.php$1&%{QUERY_STRING} [L]
Soluzione
La semplice risposta: queste dichiarazioni riscrivono ogni richiesta in un file rewrite.php
.
La risposta più completa: le direttive RewriteCond
e RewriteRule
provengono dalle modulo Apache mod_rewrite e fornisce un meccanismo di riscrittura degli URL basato su regole.
Sembra che queste regole intendano riscrivere ogni richiesta in un file rewrite.php
, in una directory specifica ( / ~
foobar /rewrite.php
) o nella radice ( /rewrite.php
).
Altri suggerimenti
Se sei nuovo, leggi http: //httpd.apache. org / docs / 1.3 / mod / mod_rewrite.html , è spiegato molto bene.
p.s. Il tuo titolo " Cosa significano queste dichiarazioni nel mio file .htaccess di PHP? " non è corretto, .htacces non è un file php.
Dicono
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
" Utilizza la seguente regola solo se la richiesta non corrisponde a un file o directory esistente. "
Quelle sono mod_rewrite .
È una regola mod_rewrite di Apache. A meno che non si stia utilizzando una sorta di framework, probabilmente non è necessario. Vedi Apache mod_rewrite per maggiori informazioni.