Вам нужно перезапустить apache, чтобы правила перезаписи в .htaccess вступили в силу?

Я отправил свои файлы .htaccess на производственные серверы, но они не работают. Будет ли перезагрузка следующим шагом, или я должен проверить что-то еще.


person Jesse Hattabaugh    schedule 27.09.2008    source источник


Ответы (7)


Перезапуск не требуется для внесения изменений в .htaccess. Что-то еще не так.

Убедитесь, что ваш .htaccess содержит оператор

RewriteEngine включен

который требуется, даже если он также присутствует в httpd.conf. Также убедитесь, что .htaccess доступен для чтения процессом httpd.
Проверьте error_log — он сообщит вам обо всех ошибках в .htaccess, если он используется. Помещение преднамеренной синтаксической ошибки в .htaccess является хорошей проверкой, чтобы убедиться, что файл используется — вы должны получить ошибку 500 на любой странице в том же каталоге.

Наконец, вы можете включить журнал перезаписи, используя такие команды в вашем httpd.conf:

Журналы RewriteLog/rewritelog

RewriteLogLevel 7

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

person TomG    schedule 27.09.2008
comment
Это немного устарело. Я столкнулся с похожей проблемой и хотел отладить свои перезаписи для конкретного варианта использования. Я попробовал этот метод, но после небольшого разочарования и копания я понял, в чем проблема. Это для старых версий апача. Для apache2.4 › замените RewriteLog и LogLevel выше на: LogLevel alert rewrite:trace7. После перезапуска apache вы должны увидеть следы в журнале ошибок. Надеюсь, это поможет. http://httpd.apache.org/docs/2.4/mod/mod_rewrite.html#logging - person Casper Wilkes; 16.04.2018
comment
Я использую apache 2.4 на Debian, WSL и не имею конфигурации httpd. Мой htaccess не распознается. - person Timo; 21.10.2020

Нет:

Apache позволяет децентрализованно управлять конфигурацией с помощью специальных файлов, размещенных внутри веб-дерева. Специальные файлы обычно называются .htaccess, но в AccessFileName можно указать любое имя.... Так как файлы .htaccess считываются при каждом запросе, изменения, сделанные в этих файлах, вступают в силу немедленно...

person Milen A. Radev    schedule 27.09.2008
comment
Если вы добавили имя пользователя в «Требуется пользователь» в файле с поддержкой сайтов, я эмпирическим путем обнаружил, что вам требуется перезагрузка. Изящный делает это. - person Ross; 06.02.2012

Из документации apache: чаще всего проблема заключается в том, что AllowOverride не установлен таким образом, чтобы ваши директивы конфигурации соблюдались. Убедитесь, что у вас нет действия AllowOverride None для рассматриваемой области файла. Хороший тест для этого — поместить мусор в ваш файл .htaccess и перезагрузить его. Если ошибка сервера не генерируется, то у вас почти наверняка действует AllowOverride None.

person PiedPiper    schedule 27.09.2008
comment
Удаление ссылки на Apache — AllowOverride: http://httpd.apache.org/docs/2.2/mod/core.html#AllowOverride - person scunliffe; 27.09.2008
comment
Я добавляю эту строку ‹directory/›‹/directory› в свой .htaccess, чтобы создать ошибку в журнале. Он скажет: «Каталог здесь запрещен», и я знаю, что он читает мой файл. - person Mnebuerquo; 04.12.2009

Только если вы не добавили модуль mod_rewrite в Apache.

Вам нужно только перезапустить Apache, если вы изменили какие-либо файлы Apache «.conf».

person ethyreal    schedule 27.09.2008

У меня та же проблема, и кажется, что сообщение PiedPiper о AllowOverride было наиболее полезным. Проверьте файл httpd.conf на «AllowOverride» и убедитесь, что для него установлено значение «Все».

person Dave Ip    schedule 01.07.2011
comment
Соответствующее сообщение: Как установить AllowOverride all - person Zach Saucier; 15.12.2016

В случае .htaccess перезагрузка не требуется, если он не работает, вероятные причины включают в себя.

  • AllowOverride Можно не устанавливать который пользователь может установить внутри httpd.conf или, возможно, ему придется связаться с администратором сервера.

  • Проверьте имя файла .htaccess, оно должно быть .htaccess, а не htaccess.txt, см. здесь инструкции по его созданию.

  • Попробуйте использовать простую директиву типа Options -Indexes или deny all, чтобы увидеть, работает она или нет.

  • очищайте кеш браузера каждый раз, если есть правило для перенаправления или подобное, если предыдущее перенаправление кешируется, кажется, что что-то не работает.

person Abhishek Gurjar    schedule 29.04.2017

Что у вас в .htaccess? Переписать правила? Убедитесь, что mod_rewrite установлен и включен.

Другие вещи? Попробуйте установить для параметра AllowOverride значение «все» в этом каталоге.

person ceejayoz    schedule 27.09.2008