Как мне заставить mod_rewrite работать в моем домашнем каталоге?
Вопрос
У меня есть мои PHP-файлы, хранящиеся во FreeBSD в этом каталоге:
/home/david/public_html/code/php
В моем браузере я получаю к ним доступ по этому URL:
http://192.168.6.7/~david/code/php
И у меня есть файл htaccess для перезаписи URL-адресов:
RewriteEngine on
RewriteRule ^test test.php
Но когда я иду к http://192.168.6.7 /~дэвид/код/php/тест в моем браузере я получаю эту ошибку:
Not Found
The requested URL /home/david/public_html/code/php/test.php
Как вы можете видеть, правило перезаписи успешно пытается перенаправить test на test.php.Но по какой-то причине это не удается.
Я нашел это в моем файле журнала ошибок apache:
File does not exist: /usr/local/www/data/home
Кто-нибудь знает, как это исправить?Кстати, если я помещу это в веб-каталог, а не в свой домашний каталог, все будет работать нормально.
Решение
Установите базовый URL-путь на /~david/code/php/
с RewriteBase
:
RewriteBase /~david/code/php/
Вы также должны четко указать, чтобы установить UseDir
Для public_html
.Смотрите также Веб-каталоги для каждого пользователя в руководстве Apache.