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


98

Я перемістив свої файли .htaccess на сервери виробництва, але вони не працюють. Чи буде перезавантаження наступним кроком, чи слід перевірити щось інше.

Відповіді:


93

Перезавантаження не є змін у .htaccess потрібен. Щось інше не так.

Переконайтеся, що ваш .htaccess включає заяву

ПерепишітьEngine на

що потрібно, навіть якщо він також присутній у httpd.conf. Також переконайтеся, що .htaccess читається процесом httpd.
Перевірте файл error_log - він повідомить вам про будь-які помилки в .htaccess, якщо він використовується. Введення навмисної синтаксичної помилки.

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

RewriteLog "журнали / переписати"

ПерепишітьLogLevel 7

Згенерований таким чином файл журналу надасть вам детальну інформацію про відповідність правил перезапису та як вони оброблялися.


3
Це трохи застаріло. Я зіткнувся з подібною проблемою і хотів налагодити свої переписки для конкретного випадку використання. Я спробував цей метод, але, трохи розчарувавшись і перекопавшись, я зрозумів, у чому проблема. Це для старих версій apache. Для apache2.4> замінити RewriteLog & LogLevel вище: LogLevel alert rewrite:trace7. Після перезапуску apache слід побачити сліди в error.log Надії, яка допомагає. http://httpd.apache.org/docs/2.4/mod/mod_rewrite.html#logging
Каспер Вілкс

52

Ні :

Apache дозволяє децентралізувати управління конфігурацією за допомогою спеціальних файлів, розміщених всередині веб-дерева. Зазвичай викликуються спеціальні файли .htaccess, але будь-яке ім'я може бути вказане в директиві AccessFileName ... Оскільки файли .htaccess читаються на кожен запит, зміни, внесені в ці файли, набирають негайної сили ...


Якщо ви додали ім'я користувача до "Вимагати користувача" у файлі з підтримкою веб-сайтів, я емпірично встановив, що вам потрібен перезапуск. Витончений це робить.
Росс

18

З документації на апаш: Найчастіше проблема полягає в тому, що AllowOverride не встановлений таким чином, щоб ваші директиви щодо налаштування виконувались. Переконайтесь, що у вас немає дій AllowOverride None для області файлу, про яку йдеться. Хороший тест для цього - помістити сміття у свій .htaccess файл та перезавантажити. Якщо помилка сервера не генерується, ви майже напевно маєте дію AllowOverride None.


1
Переміщення посилання на Apache - AllowOverride: httpd.apache.org/docs/2.2/mod/core.html#AllowOverride
scunliffe

2
Я додаю цей рядок "<каталог /> </directory>" до свого .htaccess, щоб створити помилку в журналі. Він буде говорити "<Каталог не дозволений тут", і я знаю, що він читає мій файл.
Mnebuerquo

3

Тільки якщо ви цього не зробили додали модуль mod_rewrite до Apache.

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


2

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


1
Відповідна публікація: Як встановити AllowOverride all
Зак Сосьє

2

У разі .htaccess перезапуск не потрібен, якщо він не працює, включайте ймовірні причини.

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

  • Перевірте ім'я файлу .htaccess, воно повинно бути .htaccess not htaccess.txt, дивіться тут, щоб дізнатися, як його створити.

  • Спробуйте використовувати Options -Indexesчи deny allякусь просту директиву, щоб побачити, працює вона чи ні.

  • очищати кеш-пам'ять браузера кожного разу, якщо правило для переадресації або подібне, якщо попереднє переадресація кешоване, виглядає так, ніби все не працює.


0

Що у вас .htaccess? ПереписатиПравила? Перевірте, чи встановлено та увімкнено mod_rewrite.

Інші речі? Спробуйте встановити AllowOverride на "все" у цьому каталозі.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.