У меня есть это в моем/srv/www/htdocs/.htaccess файле:
RewriteEngine On #turn on rewite engine
RewriteRule ^schedule/?$ index.php?page=schedule [NC,L]
RewriteRule ^music/?$ index.php?page=music [NC,L]
RewriteRule ^thefamily/?$ index.php?page=thefamily [NC,L]
RewriteRule ^contact/?$ index.php?page=contact [NC,L]
Я перехожу в http://localhost/contact
и я получаю 404 ошибки. На моем удаленном сервере однако, этом коде в .htaccess
хорошо работает. Как я заставляю RewriteRule работать над Apache2? Я погуглил, и считайте, что эта команда заставила бы его работать: # a2enmod rewrite
но это не сделало [я действительно перезапускал apache2 также].
Я даже добавил RewriteEngine On
к моему/etc/apache2/sites-available/default файл [В VirtualHost], но это не зафиксировало его также.
Я выполняю его из Ubuntu 11.04. Любая ценившая справка, Спасибо!
Значение по умолчанию настроило апачский virtualhost на debian (и я принимаю Ubuntu), не читает .htaccess файлы. Для Включения его откройте файл конфигурации по умолчанию (/etc/apache2/sites-available/default), ищите что-то подобное:
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
Измените строку "AllowOverride Ни один" к "AllowOverride Все". Перезагрузка или апач перезапуска (/etc/init.d/apache перезагрузка). AllowOverride ограничивает директивы, которые могут быть помещены в .htaccess файл, когда он не установлен ни на Один, апач никогда не анализирует файл.