У меня есть это в моем файле /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. Любая помощь приветствуется, спасибо!

1 ответ1

2

Настроенный по умолчанию виртуальный хост apache в 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 None" на "AllowOverride All". Перезагрузите или перезапустите apache (/etc/init.d/apache reload). AllowOverride ограничивает директивы, которые могут быть помещены в файл .htaccess, когда для него установлено значение None, apache никогда не анализирует файл.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .