RewriteRule в .htaccess не работает - PullRequest
       7

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

6 голосов
/ 03 февраля 2010

В настоящее время я использую 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 выглядит точно 1018* вот так, как это было пусто до того, как я его отредактировал.

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

Not Found

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

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

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

Ответы [ 3 ]

21 голосов
/ 03 февраля 2010

Для блага других я разобрался с ответом:

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

AllowOverride None

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

AllowOverride All
3 голосов
/ 03 февраля 2010

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

RewriteRule ^doesnotexist/(.*)$ /page.php?p=$1
0 голосов
/ 02 апреля 2014

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...