Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: Jesse HattabaughОтветов: 7

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

apachemod-rewriterestart

Ответы

Ответ 1 · рейтинг 96 · TomG

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

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

RewriteEngine включен

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

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

Журналы RewriteLog/rewritelog

RewriteLogLevel 7

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

Ответ 2 · рейтинг 52 · Milen A. Radev

Нет:

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

Ответ 3 · рейтинг 18 · PiedPiper

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

Ответ 4 · рейтинг 3 · ethyreal

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

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

Ответ 5 · рейтинг 2 · Dave Ip

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

Ответ 6 · рейтинг 2 · Abhishek Gurjar

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

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

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

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

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

Ответ 7 · ceejayoz

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

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы