apache - примеры - rewriterule синтаксис




Как включить mod_rewrite для Apache 2.2 (11)

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

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

LoadModule rewrite_module modules/mod_rewrite.s

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

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

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


Open terminal и typin a2enmod rewrite , он включит ваш модуль mod_rewrite для Apache.

Затем перейдите в /etc/apache2/sites-available и отредактируйте файл по умолчанию. (Для этого у вас должны быть права на доступ к этому файлу и доступной папке.)

Заменить ниже существующими строками от 4 до 14

DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>

Теперь перезапустите apache с помощью /etc/init.d/apache2 restart или service apache2 restart

Повторите очистить URL-тест, и на этот раз он будет передан.


В Ubuntu:

Бежать:

a2enmod rewrite

а потом:

service apache2 restart

mod_rewrite теперь будет включен!


Для моей ситуации у меня было

RewriteEngine On

в моем .htaccess , вместе с загружаемым модулем, и он не работал.

Решение моей проблемы состояло в том, чтобы отредактировать мою запись vhost для inlcude

AllowOverride all

в разделе <Directory> для данного сайта.


Если не указано выше, попробуйте отредактировать / etc / apache2 / sites-enabled / 000-default

почти на вершине вы найдете

<Directory /var/www/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    allow from all
</Directory>

Измените AllowOverride None на AllowOverride All

это сработало для меня


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

sudo a2enmod rewrite

И перезапуск apache через команду ниже

sudo service apache2 restart

Новая версия Apache в какой-то мере изменилась. Если ваша версия apache равна 2,4, вам нужно перейти в /etc/apache2/ . Будет файл с именем apache2.conf . Вы должны отредактировать его (у вас должно быть разрешение root). Измените текст каталога таким образом

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

Теперь перезапустите apache.

service apache2 reload

Надеюсь, что это работает.


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

AllowOverride mod_rewrite mod_mime

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

LoadModule rewrite_module modules/mod_rewrite.so

Refrences


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

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

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


Я бы настоятельно советовал всем, кто хочет включить директивы mod_rewrite в файлах .htacces, чтобы использовать AllowOverride FileInfo вместо того, чтобы разрешать все, как предлагают ВСЕ ответы на этой странице. Грустно видеть, что все эти ответы используют подход «как-давно-работает-это-хорошо», а не пытаться понять последствия предлагаемого «решения». Постарайтесь понять, что вы делаете на своем сервере, и как ограничить привилегии, которые вы только что дали с помощью AllowOverride All . RTFM! , это совершенно очевидно по этому вопросу. Давай, парни, это не ракеты, это просто веб-сервер!


Я написал об этом в статье: http://www.jarrodoberto.com/articles/2011/11/enabling-mod-rewrite-on-ubuntu

Попробуйте установить: AllowOverride All .

Вторая наиболее распространенная проблема заключается не в том, что включена a2enmod rewrite мод: a2enmod rewrite а затем перезапустить apache.


<редактировать>

Просто заметили, что вы сказали mod_rewrite.s вместо mod_rewrite.so - надеюсь, что это опечатка в вашем вопросе, а не в файле httpd.conf! :)

</ редактирование>

Я больше привык использовать Apache для Linux, но мне пришлось это сделать на днях.

Прежде всего, загляните в установочный каталог Apache. (Я буду предполагать, что вы установили его в «C: \ Program Files» здесь)

Загляните в папку «C: \ Program Files \ Apache Software Foundation \ Apache2.2 \ modules» и убедитесь, что там есть файл mod_rewrite.so. (Должно быть, это предусмотрено как часть установки по умолчанию.

Затем откройте «C: \ Program Files \ Apache Software Foundation \ Apache2.2 \ conf» и откройте httpd.conf. Убедитесь, что линия:

#LoadModule rewrite_module modules/mod_rewrite.so

раскоментирован:

LoadModule rewrite_module modules/mod_rewrite.so

Кроме того, если вы хотите включить RewriteEngine по умолчанию, вы можете добавить что-то вроде

<IfModule mod_rewrite>
    RewriteEngine On
</IfModule>

до конца вашего файла httpd.conf.

Если нет, убедитесь, что вы указали

RewriteEngine On

где-то в вашем файле .htaccess.