Как включить mod_rewrite в Apache?


165

Я только что установил стек LAMP в моей системе Ubuntu.

Перенаправление не работает для меня. Я не знаю, как это исправить. Может кто-нибудь помочь мне?


3
ИМХО, этот вопрос не относится к Ubuntu и должен быть перенесен в Server Fault .
Паоло

2
ОП установила Лампу на UBUNTU. Насколько более конкретный Ubuntu вы хотите?
wojox

1
@wojov: я не знаю об этом деле, но этот аргумент не работает. "Как я могу использовать это приложение (в Ubuntu)?" в основном не по теме.

23
Это не «Как я могу использовать приложение», а «как включить определенную функцию в Ubuntu». Apache под Ubuntu использует другую конфигурацию, в которой каждый модуль и виртуальный хост является файлом /etc/apache2и который можно включить с помощью a2*программ.
Лекенштейн

Вы должны описать, что вы сделали, чтобы сузить проблему, это
ericn

Ответы:


239

Чтобы включить модуль перезаписи, запустите «apache2 enable module rewrite»:

sudo a2enmod rewrite

Вам необходимо перезапустить веб-сервер, чтобы применить изменения:

sudo service apache2 restart

Если вы планируете использовать mod_rewrite в .htaccessфайлах, вам также нужно включить использование .htaccessфайлов, изменив AllowOverride Noneна AllowOverride FileInfo. Для веб-сайта по умолчанию отредактируйте /etc/apache2/sites-available/default:

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

После такого изменения вам нужно перезапустить Apache снова.


18
У меня был больший успех с AllowOverride All
Валентин Деспа

Спасибо! sudo a2enmod rewriteи FileInfoисправил это для меня!
d -_- b

22
Для меня этот файл был /etc/apache2/apache2.conf, где я нашел эту запись конфигурации
doc_id

Да, внесите два исправления, чтобы устранить проблему.
Аделин

Это не работает для меня. Я разместил здесь вопрос askubuntu.com/questions/809619/failing-to-rewrite-url
Сухаил Гупта,

49

Я осмелюсь добавить специальный ответ (как продолжение к великому ответу выше) относительно Ubuntu 14.04 и .htaccess:

В 14.04 имя файла конфигурации по умолчанию изменяется на 000-default.conf:

sudo gedit /etc/apache2/sites-available/000-default.conf

добавьте следующее в конец файла:

<Directory "/var/www/html">
    AllowOverride All
</Directory>

По какой-то причине в Ubuntu 14.04 и apache2 корень установлен на /www/html. Если вы хотите изменить корень веб - сервер обратно в старые добрые /www, open 000-default.confи изменения

DocumentRoot /var/www/html/

в

DocumentRoot /var/www/

и тогда, конечно, это должно быть

<Directory "/var/www">
    AllowOverride All
</Directory>

1
Спасибо за информацию! Таким / новым способом мы можем использовать www как папку, куда мы помещаем все веб-сайты, а html по умолчанию является «веб-сайтом» для localhost. Может быть важно, если вы играете с открытием портов для мира - таким образом ваш локальный хост не может видеть папки других проектов.
Владимир Вуканац

1
Это не работает для меня. Я использую Ubuntu 14.04.4 LTS
Suhail Gupta
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.