Я отправил свои файлы .htaccess на производственные серверы, но они не работают. Будет ли перезагрузка следующим шагом, или я должен проверить что-то еще.
Вопрос
Вам нужно перезапустить apache, чтобы правила перезаписи в .htaccess вступили в силу?
Ответы
Ответ 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.
Похожие материалы
- Почему это правило перезаписи не работает?
- Я могу сделать это? Apache + mod_jk + Tomcat + ось
- Нужна помощь в преобразовании кода apache .htaccess в код lighttpd url_rewrite
- Вопрос о перезаписи URL-адреса Apache для начинающих
- Перенаправить запросы, только если файл не найден?
- Внешний интерфейс Magento 404 на нескольких сайтах после перемещения сервера