2011-02-21 12 views
32

Questo è il codice .htaccess per permalink in WordPress. Non capisco come funzioni. Qualcuno può spiegare?Questo è il codice .htaccess in WordPress. Qualcuno può spiegare come funziona?

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 

ho cercato con Google e ho scoperto che -f e -d parte significa dare directory e file reali priorità più alta.

Ma allora quali sono ^index\.php$ - [L] e RewriteRule . /index.php [L]?

In che modo WordPress elabora categorie, tag, pagine e così via con questo?

Succede internamente? Se è così, sono interessato a imparare come farlo in PHP.

Grazie

risposta

48

^index\.php$ - [L] impedisce le richieste per index.php di essere riscritta, per evitare un inutile controllo del file system. Se la richiesta è per index.php, la direttiva non fa nulla - e arresta le regole di elaborazione [L].

Questo blocco è una regola e dice che se non è un file reale e non una directory reale, reindirizzare la richiesta a index.php.

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 

index.php stesso interpreta l'URL che è stato richiesto dal cliente (PHP può vedere l'URL richiesto utilizzando $_SERVER['REQUEST_URI']) e si chiama il codice corretto per il rendering della pagina l'utente ha richiesto.

+0

Ho notato che wordpress reindirizza domain.com/index.php a domain.com. Se volessi fare qualcosa del genere in PHP, dovrei semplicemente usare la funzione di intestazione? Mi chiedo se ci sia un modo migliore (search engine friendly? Più efficiente?) Per farlo. – webnat0

+0

Non vedo alcun motivo per cui un reindirizzamento 301 dalla funzione Intestazione non sarebbe appropriato. Potresti modificare le tue impostazioni di mod_rewrite per fare un rapido reindirizzamento 301 in teoria, ma in ogni caso non farà un'enorme differenza. –

+2

'RewriteRule^index \ .php $ - [L]': non è ridondante, dato che 'index.php' è davvero un file reale (premendo quindi 'RewriteCond% {REQUEST_FILENAME}! -f')? – matpop

Problemi correlati