Как включить mod_rewrite для Apache 2.2 - PullRequest
450 голосов
/ 15 мая 2009

У меня новая версия Apache 2.2 на моей машине с Vista, все работает отлично, кроме перезаписи модов.

Я не комментировал

LoadModule rewrite_module modules/mod_rewrite.s

но ни одно из моих правил перезаписи не работает, даже такие простые, как

RewriteRule not_found %{DOCUMENT_ROOT}/index.php?page=404

Все правила, которые я использую, работают на моем хостинге, поэтому они должны быть в порядке, поэтому мой вопрос, есть ли какая-то скрытая вещь в конфигурации apache, которая может блокировать перезапись мода?

Ответы [ 15 ]

3 голосов
/ 12 сентября 2018

Используйте команду ниже

sudo a2enmod rewrite

И перезапустите apache с помощью приведенной ниже команды

sudo service apache2 restart
3 голосов
/ 27 марта 2017

Старый поток, просто хочу поставить, чтобы не устанавливать AllowOverride для всех, вместо этого использовать конкретный мод, который вы хотите использовать,

AllowOverride mod_rewrite mod_mime

И эта строка должна быть без комментариев

LoadModule rewrite_module modules/mod_rewrite.so

Refrences

3 голосов
/ 29 апреля 2015

В первый раз, когда я боролся с правилами mod_rewrite, игнорирующими мой трафик, я узнал (расстраивающе), что я поместил их в неправильный <VirtualHost>, что означало, что мой трафик будет игнорировать всех из них, независимо от того, как хорошо они были написаны. Убедитесь, что это не происходит с вами:

# Change the log location to suit your system. RewriteLog /var/log/apache-rw.log RewriteLogLevel 2

Эти параметры активируются, если вы выполняете изящный перезапуск Apache, поэтому вы можете перерабатывать их и внимательно следить за поведением mod_rewrite. Как только ваша проблема будет решена, поверните RewriteLogLevel обратно и отпразднуйте.

В 100% моего опыта я обнаружил, что RewriteLog помог мне обнаружить проблему с моими правилами перезаписи. Я не могу рекомендовать это достаточно. Удачи в устранении неполадок!

Кроме того, эта закладка - ваш лучший друг: http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewritelog

3 голосов
/ 15 мая 2009

Очевидно, что есть несколько способов сделать это, но я бы предложил использовать более стандартный:

ErrorDocument 404 /index.php?page=404
2 голосов
/ 07 февраля 2014

Что сработало для меня (в Ubuntu):

sudo su
cd /etc/apache2/mods-enabled
ln ../mods-available/rewrite.load rewrite.load

Также, как уже упоминалось, убедитесь, что в соответствующем разделе /etc/apache2/sites-available/default

установлено значение AllowOverride all.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...