2008-10-01 27 views
10

Si uso mod_rewrite para controlar todos mis redireccionamientos 301, ¿esto sucede antes de que se sirva mi página? Entonces, si también tengo un montón de reglas de redireccionamiento en un script php que se ejecuta en mi página, ¿el .htaccess entrará en funcionamiento primero?¿Qué pasa primero? .htaccess o código php?

Respuesta

20

Cuando se realiza una solicitud al URI afectado por el archivo .htaccess, Apache manejará las reglas de reescritura antes de que se ejecute cualquiera de sus códigos PHP.

8

Sí, el archivo .htaccess se analiza antes de que se sirva el script.

4

.htaccess sucede primero.

3

htaccess es controlado por el servidor web. Este archivo se tomará en cuenta antes de su archivo PHP.

Por ejemplo, puede restringir el acceso a una carpeta en particular con su archivo htaccess. Por lo tanto, tiene que hacerse cargo antes de su PHP.

Espero que esto ayude.

3

El .htaccess lo realiza Apache antes de ejecutar el script php. (imagínese si el script php se ejecuta y luego el .htaccess hace una redirección a otra página ...).

43

The .htaccess se lanzará en primer lugar. Si nos fijamos en el ciclo de petición de Apache:

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

PHP es un manejador de respuesta. mod_rewrite se ejecuta en la traducción URI, excepto las reglas de reescritura en .htaccess y <Directorio> o < Ubicación > bloques que se ejecutan en la fase de reparación. Esto se debe a que Apache no sabe en qué directorio se encuentra (y por lo tanto qué directorio < > o .htaccess para leer) hasta después de la traducción de URI.

En respuesta a la pregunta de gabriel1836 sobre la imagen, la agarré de la segunda diapositiva de this presentation pero es originalmente del libro: Writing Apache Modules in Perl and C que recomiendo encarecidamente.

+0

¿Podría publicar un vínculo a la imagen? –

+0

editado para agregar la atribución de la imagen. – bmdhacks

+0

Interesante, no me di cuenta de que la registración solo ocurría después de la respuesta. +1 para encontrar ese diagrama. –

1

Siempre se puede probar esto con el siguiente comando:

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

Con este comando se ve el que está respondiendo a su solicitud.

Como todos los demás mencionados, .htaccess es primero.

0

Así que, básicamente, la .htaccess más o menos requiere el código PHP o archivos relevantes, ya que según las reglas especificadas en el .htaccess, lo que significa .htaccess se ejecuta en primer lugar.