Вам нужно перезапустить apache, чтобы правила перезаписи в .htaccess вступили в силу? - PullRequest
92 голосов
/ 27 сентября 2008

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

Ответы [ 7 ]

86 голосов
/ 27 сентября 2008

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

Убедитесь, что ваш .htaccess включает в себя заявление

ПереписатьEngine на

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

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

RewriteLog "logs / rewritelog"

RewriteLogLevel 7

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

51 голосов
/ 27 сентября 2008
нет

Нет

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

18 голосов
/ 27 сентября 2008

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

3 голосов
/ 27 сентября 2008

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

Вам необходимо перезапустить Apache только в случае изменения каких-либо файлов Apache ".conf".

2 голосов
/ 29 апреля 2017

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

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

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

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

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

2 голосов
/ 01 июля 2011

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

0 голосов
/ 27 сентября 2008

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...