Я отправил свои файлы .htaccess на производственные серверы, но они не работают. Будет ли перезагрузка следующим шагом, или я должен проверить что-то еще.
Вам нужно перезапустить apache, чтобы правила перезаписи в .htaccess вступили в силу?
Ответы (7)
Перезапуск не требуется для внесения изменений в .htaccess. Что-то еще не так.
Убедитесь, что ваш .htaccess содержит оператор
RewriteEngine включен
который требуется, даже если он также присутствует в httpd.conf. Также убедитесь, что .htaccess доступен для чтения процессом httpd.
Проверьте error_log — он сообщит вам обо всех ошибках в .htaccess, если он используется. Помещение преднамеренной синтаксической ошибки в .htaccess является хорошей проверкой, чтобы убедиться, что файл используется — вы должны получить ошибку 500 на любой странице в том же каталоге.
Наконец, вы можете включить журнал перезаписи, используя такие команды в вашем httpd.conf:
Журналы RewriteLog/rewritelog
RewriteLogLevel 7
Сгенерированный таким образом файл журнала даст вам подробные сведения о том, какие правила перезаписи совпали и как они были обработаны.
LogLevel alert rewrite:trace7
. После перезапуска apache вы должны увидеть следы в журнале ошибок. Надеюсь, это поможет. http://httpd.apache.org/docs/2.4/mod/mod_rewrite.html#logging
- person Casper Wilkes; 16.04.2018
Нет:
Apache позволяет децентрализованно управлять конфигурацией с помощью специальных файлов, размещенных внутри веб-дерева. Специальные файлы обычно называются
.htaccess
, но в AccessFileName можно указать любое имя.... Так как файлы .htaccess считываются при каждом запросе, изменения, сделанные в этих файлах, вступают в силу немедленно...
Из документации apache: чаще всего проблема заключается в том, что AllowOverride не установлен таким образом, чтобы ваши директивы конфигурации соблюдались. Убедитесь, что у вас нет действия AllowOverride None для рассматриваемой области файла. Хороший тест для этого — поместить мусор в ваш файл .htaccess и перезагрузить его. Если ошибка сервера не генерируется, то у вас почти наверняка действует AllowOverride None.
Только если вы не добавили модуль mod_rewrite в Apache.
Вам нужно только перезапустить Apache, если вы изменили какие-либо файлы Apache «.conf».
У меня та же проблема, и кажется, что сообщение PiedPiper о AllowOverride было наиболее полезным. Проверьте файл httpd.conf на «AllowOverride» и убедитесь, что для него установлено значение «Все».
В случае .htaccess перезагрузка не требуется, если он не работает, вероятные причины включают в себя.
AllowOverride Можно не устанавливать который пользователь может установить внутри httpd.conf или, возможно, ему придется связаться с администратором сервера.
Проверьте имя файла .htaccess, оно должно быть .htaccess, а не htaccess.txt, см. здесь инструкции по его созданию.
Попробуйте использовать простую директиву типа
Options -Indexes
илиdeny all
, чтобы увидеть, работает она или нет.очищайте кеш браузера каждый раз, если есть правило для перенаправления или подобное, если предыдущее перенаправление кешируется, кажется, что что-то не работает.
Что у вас в .htaccess? Переписать правила? Убедитесь, что mod_rewrite установлен и включен.
Другие вещи? Попробуйте установить для параметра AllowOverride значение «все» в этом каталоге.