RewriteRule в .htaccess не работает

В настоящее время я запускаю Apache2 на своем локальном компьютере с последней версией Ubuntu.

Я пытаюсь заставить базовую перезапись URL-адресов работать с помощью файла .htaccess.

Файл "http://localhost/page.php?=home" существует, и его местоположение "/doesnotexist/home" - нет.

Я хотел бы, чтобы первая страница загружалась при запросе второй.

Мой файл .htaccess выглядит так:

RewriteEngine On
RewriteRule ^/doesnotexist/(.*)$ /page.php?p=$1 

Мой файл httpd.conf выглядит так:

LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so

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

Обратите внимание, что мой файл httpd.conf выглядит точно так, поскольку он был пуст до того, как я его отредактировал.

Результат, который я получаю, таков:

Not Found

The requested URL /doesnotexist/home was not found on this server.

Я гуглил всю эту проблему, и я никогда не получал ничего, кроме ошибки выше.

Если у кого есть идеи, буду очень признателен.


person riwalk    schedule 03.02.2010    source источник


Ответы (3)


Для пользы других я понял ответ:

В файле "/etc/apache2/sites-enabled/000-default" была строчка:

AllowOverride None

Измените это на:

AllowOverride All
person riwalk    schedule 03.02.2010
comment
Примечание: этот параметр конфигурации был перемещен в /etc/apache2/apache2.conf. - person therightstuff; 07.04.2019
comment
Я изменил это в ‹Каталог /var/www/› и теперь это 500 Внутренняя ошибка сервера... - person rohitcoder; 23.09.2020
comment
Работал на меня. В Mac OS X (2021 г.) вы можете найти эту опцию в разделе <Directory "/Library/WebServer/Documents"> в httpd.conf (что почему-то обескураживает, когда Apache в Mac OS X немного отличается от Linux (без sites-enabled каталога) - person Sridhar Sarnobat; 16.04.2021

Вам необходимо удалить префикс контекстного пути из шаблона при использовании mod_rewrite в файле .htaccess. В случае корневого каталога префикс пути просто /. Итак, попробуйте следующее:

RewriteRule ^doesnotexist/(.*)$ /page.php?p=$1
person Gumbo    schedule 03.02.2010
comment
Спасибо за быстрый ответ, но извините, поведение не изменилось. - person riwalk; 03.02.2010

Если я помещу .htaccess в /Library/WebServer/Documents и открою «localhost/»; чтобы проверить это, это работает, как и ожидалось. Это просто не работает в "~/Sites". Я пробовал это на Mac OS X Mavericks.

person Varun Bhatia    schedule 02.04.2014