Что происходит первым? .htaccess или php код? - PullRequest
10 голосов
/ 01 октября 2008

Если я использую mod_rewrite для управления всеми своими перенаправлениями 301, происходит ли это до того, как моя страница будет обработана? так что, если у меня также есть несколько правил перенаправления в php-скрипте, который запускается на моей странице, будет ли .htaccess первым?

Ответы [ 8 ]

43 голосов
/ 01 октября 2008

.htaccess запустится первым. Если вы посмотрите на цикл запросов Apache:

Apache Request Cycle

PHP - обработчик ответа. mod_rewrite выполняется при преобразовании URI, за исключением правил перезаписи в блоках .htaccess и или , которые выполняются на этапе исправления. Это связано с тем, что Apache не знает, в каком каталоге он находится (и, следовательно, в каком или .htaccess для чтения), до завершения преобразования URI.

В ответ на вопрос gabriel1836 об изображении я взял его со второго слайда этой презентации , но он изначально из книги: Написание модулей Apache на Perl и C Я настоятельно рекомендую.

20 голосов
/ 01 октября 2008

Когда делается запрос к URI, затронутому файлом .htaccess, Apache обработает все правила перезаписи перед выполнением любого вашего кода PHP.

8 голосов
/ 01 октября 2008

Да, файл .htaccess анализируется перед обслуживанием вашего скрипта.

4 голосов
/ 01 октября 2008

.htaccess происходит первым.

3 голосов
/ 01 октября 2008

.htaccess выполняется Apache перед выполнением сценария php. (представьте, что скрипт php выполняется, а затем .htaccess перенаправляет на другую страницу ...).

3 голосов
/ 01 октября 2008

htaccess контролируется веб-сервером. Этот файл будет учтен перед вашим файлом PHP.

Например, вы можете ограничить доступ к определенной папке с вашим файлом htaccess. Итак, он должен быть ответственным перед вашим PHP.

Надеюсь, это поможет.

1 голос
/ 19 января 2010

Вы всегда можете проверить это с помощью следующей команды:

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

С помощью этой команды вы видите, кто отвечает на ваш запрос.

Как и все другие упомянутые, .htaccess - первый.

0 голосов
/ 25 сентября 2012

Таким образом, в основном, .htaccess более или менее требует соответствующего кода PHP или файлов, в соответствии с правилами, указанными в .htaccess, что означает, что .htaccess запускается первым.

...