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

83

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

Теги:
.htaccess
mod-rewrite
restart

7 ответов

69
Лучший ответ

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

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

RewriteEngine on

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

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

RewriteLog "logs/rewritelog"

RewriteLogLevel 7

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

  • 0
    Это немного устарело. Я столкнулся с подобной проблемой и хотел отладить свои переписывания для конкретного варианта использования. Я попробовал этот метод, но после небольшого разочарования и копания я понял, в чем проблема. Это для более старых версий Apache. Для apache2.4> замените приведенный выше RewriteLog & LogLevel на: LogLevel alert rewrite:trace7 . После перезапуска apache вы должны увидеть следы в файле error.log. Надеюсь, это поможет. http://httpd.apache.org/docs/2.4/mod/mod_rewrite.html#logging
51

Нет:

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

  • 0
    Если вы добавили имя пользователя в поле «Требовать пользователя» в файле с поддержкой сайтов, то я обнаружил, что эмпирически обнаружил, что вам нужен перезапуск. Изящный делает это.
17

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

  • 1
    Удаление ссылки на Apache - AllowOverride: httpd.apache.org/docs/2.2/mod/core.html#AllowOverride
  • 2
    Я добавляю эту строку "<directory /> </ directory>" в мой .htaccess, чтобы создать ошибку в журнале. Там будет написано «<Каталог не разрешен», и я знаю, что он читает мой файл.
3

только если вы не добавили модуль перезаписи мод в apache.

вам нужно только перезапустить apache, если вы измените файлы apache ".conf"

1

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

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

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

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

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

1

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

0

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

Другие вещи? Попробуйте установить AllowOverride в "all" в этом каталоге.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню