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

165

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

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

Vinoth
источник
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 снова.

Lekensteyn
источник
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>
davidkonrad
источник
1
Спасибо за информацию! Таким / новым способом мы можем использовать www как папку, куда мы помещаем все веб-сайты, а html по умолчанию является «веб-сайтом» для localhost. Может быть важно, если вы играете с открытием портов для мира - таким образом ваш локальный хост не может видеть папки других проектов.
Владимир Вуканац
1
Это не работает для меня. Я использую Ubuntu 14.04.4 LTS
Suhail Gupta