mod_rewrite увімкнено, але не працює


17

Я намагаюся створити бібліотеку маршрутизації PHP. Вони наводять цей приклад для файлу .htaccess:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]

Я не міг змусити це працювати, тому спробував увімкнути mod_rewrite, але там написано: "Перезапис модуля вже ввімкнено".

Чому це не працює належним чином? Спасибі! Я запускаю Ubuntu Precision 12.04 та apache2.2.22. (Перевіряється на наявність оновлень)

РЕДАКТУВАННЯ: Ще кілька подробиць, це вагранта для PuPHPet, перезапис повинен бути включений.

Відповіді:


33

Потрібно дозволити перезапис.

<Directory "/path/to/document/root/">
  AllowOverride All
  Allow from All
</Directory>

5
Це зайво дозволено. Тільки AllowOverrideнеобхідно для конфігурації в питанні. Allow from Allне має нічого спільного з питанням і може не відповідати середовищу @ randomdev.
Марк

1
<Directory "/path/to/document/root/">Я забув змінити /path/to/document/root/свій корінь проекту. Дякую!
Абхішек

16

Перш за все, встановіть для цього конфігурацію httpd (шлях може відрізнятися між собою. У моєму ubuntu він розміщений за адресою / etc / apache2 / sites-available / default):

DocumentRoot /var/www

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

Після цього слід увімкнути mod_rewrite за допомогою цієї команди:

sudo a2enmod rewrite

Останній, перезапустіть службу apache :

sudo service apache2 restart

Щоб переконатися в цьому, ви можете перевірити його ще раз із phpinfo у Конфігурація> apache2handler> Завантажені модулі, там потрібно записати, mod_rewriteце означає, що mod_rewrite увімкнено.


Чи повинно це бути у віртуальному елементі хоста?
jjxtra

Деякі приклади ви можете побачити в прикладі віртуального хоста Apache
метаморфії

1

У мене була аналогічна проблема, але інші відповіді мені не допомогли. Цей рядок на початку .htaccessвирішив мою проблему:

Options +FollowSymLinks -MultiViews
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.