2017-05-10 21 views
0

Wordpress nutzt diesen Code in .htaccess:Wie funktioniert Wordpress Permalink System?

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

Erste Frage, was die Codezeile unten bedeutet das:

RewriteRule ^index\.php$ - [L] 

Das nächste, was ist, ich weiß nicht, wie index.php diese Griffe. So alle URLs umgeleitet werden index.php ...

Wenn ich diese Adresse ein:

website.pl/One-two-Five 

.htaccess wird umleiten mich index.php:

webiste.pl/index.php 

Aber es gibt keine Informationen, ich meine QUERY_STRING oder so. Es ist nicht so etwas wie:

website.pl/index.php?data=One-two-Five 

sondern es ist nur:

website.pl/index.php 

Und das ist nur index.php ... Also, wie ist index.php dies möglich zu machen? Wie geht WordPress damit um? Ich kann keine Antworten finden. Was sind die Mechanismen von WordPress dafür?

Antwort

0

Gute Frage, und eine, die ich kürzlich in another question diskutiert.

Wie Sie sagen, alles (die nicht als Datei oder das Verzeichnis nicht vorhanden ist) wird neu geschrieben index.php von:

RewriteRule . /index.php [L] 

In Bezug auf die Codezeile:

RewriteRule ^index\.php$ - [L] 

dass gerade verhindert keine weitere Verarbeitung, wenn die URL bereits index.php ist. Die sagt nur, nichts zu ändern und die [L] sagt, die Verarbeitung dieser Iteration zu stoppen. Dies liegt daran, dass .htaccess Rewrite-Regeln die Verarbeitung neu starten, bis die URL nicht geändert wird (was eine Dateisystemprüfung beim zweiten Durchlauf verhindert).

Was danach passiert ist, dass WordPress die $_SERVER['REQUEST_URI'] Variable untersucht, um zu sehen, welche Seite ursprünglich angefordert wurde, und handelt danach. Daher muss nichts direkt an die Datei index.php weitergeleitet werden, da die ursprünglich angeforderte URL bereits in der $_SERVER['REQUEST_URI']-Variablen verfügbar ist.

Ein anderer Punkt ist, dass diese nicht Weiterleitungen sind, sie werden neu geschrieben. Eine Weiterleitung erfolgt extern und geht zurück zum Browser. Ein Neuschreiben ist nur intern und ändert nicht die URL für den Browser.

Verwandte Themen