2008-10-01 9 views
10

Wenn ich mod_rewrite verwende, um alle meine 301 Weiterleitungen zu steuern, geschieht dies, bevor meine Seite geliefert wird? Wenn ich also ein Bündel von Redirect-Regeln in einem PHP-Skript habe, das auf meiner Seite läuft, wird der .htaccess zuerst anspringen?Was passiert zuerst? .htaccess oder PHP-Code?

Antwort

20

Wenn eine Anfrage an die URI gesendet wird, die von der .htaccess-Datei betroffen ist, behandelt Apache alle Rewrite-Regeln, bevor PHP-Code ausgeführt wird.

8

Ja, die .htaccess-Datei wird analysiert, bevor das Skript geliefert wird.

4

.htaccess passiert zuerst.

3

htaccess wird vom Webserver gesteuert. Diese Datei wird vor Ihrer PHP-Datei berücksichtigt.

Zum Beispiel könnten Sie den Zugriff auf einen bestimmten Ordner mit Ihrer htaccess-Datei beschränken. Also, es muss verantwortlich sein, bevor Sie PHP.

Hoffe, das hilft.

3

Der .htaccess wird von Apache vor der Ausführung des PHP-Skripts ausgeführt. (Stellen Sie sich vor, wenn das PHP-Skript ausgeführt wird und dann die .htaccess eine Umleitung zu einer anderen Seite ...).

43

Der .htaccess tritt zuerst ein. Wenn Sie auf Wunsch Zyklus Apache aussehen:

Apache Request Cycle http://stein.cshl.org/~lstein/talks/perl_conference/apache_api/requestcycle.gif

PHP ist eine Antwort-Handler. mod_rewrite wird bei der URI-Übersetzung ausgeführt, mit Ausnahme der Umschreibungsregeln in .htaccess und <Verzeichnis> oder <Position> Blöcke, die in der Fixup-Phase ausgeführt werden. Dies liegt daran, dass der Apache bis zur URI-Übersetzung nicht weiß, in welchem ​​Verzeichnis er sich befindet (und somit welches <Verzeichnis> oder .htaccess zu lesen ist).

Als Antwort auf die Frage von Gabriel1836 über das Bild, habe ich es aus der zweiten Folie von this presentation geschnappt, aber es stammt ursprünglich aus dem Buch: Writing Apache Modules in Perl and C, die ich sehr empfehlen.

+0

Könnten Sie einen Link zum Bild posten? –

+0

bearbeitet, um die Bildzuordnung hinzuzufügen. – bmdhacks

+0

Interessant, ich wusste nicht, Logging passiert nur, nachdem die Antwort geliefert wurde. +1 für das Finden dieses Diagramms. –

1

Sie können jederzeit testen diese mit dem folgenden Befehl:

wget -S --spider http://yourdomain.com 

Mit diesem Befehl können Sie das sehen, wer auf Ihre Anfrage antwortet.

Wie alle anderen erwähnt, ist. Htaccess zuerst.

0

Also im Grunde die .htaccess mehr oder weniger erfordert den entsprechenden PHP-Code oder Dateien, wie nach den in den .htaccess angegebenen Regeln, .htaccess bedeutet zuerst ausgeführt wird.