Як увімкнути mod_rewrite в Apache?


164

Я щойно встановив стек LAMP у своїй системі Ubuntu.

Перенаправлення не працює для мене. Я не знаю, як це виправити. Хтось може мені допомогти?


3
IMHO це питання не є специфічним для Ubuntu, і його слід перенести на серверну помилку .
Паоло

2
ОП встановив лампу на UBUNTU. Скільки ще потрібно конкретного Ubuntu?
wojox

1
@wojov: Я не знаю про цю справу, але цей аргумент не працює. "Як я можу використовувати цей додаток (на Ubuntu)?" в основному поза темою.

23
Це не "Як я можу використовувати додаток", а "як включити певну функцію в Ubuntu". Apache в Ubuntu використовує інший макет конфігурації, в якому кожен модуль і віртуальний хост - це файл, /etc/apache2який можна включити за допомогою a2*програм.
Лекенштейн

Ви повинні описати, що ви зробили, щоб усунути проблему, це
ericn

Відповіді:


238

Щоб увімкнути його модуль перезапису, запустіть "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зафіксував це для мене!
д -_- б

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

Так, зробити ці дві зміни виправлено проблему.
Аделін

Це не працює для мене. Я розмістив тут питання askubuntu.com/questions/809619/failing-to-rewrite-url
Gupta

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.