Apache2 RewriteRule 不起作用

Apache2 RewriteRule 不起作用

我的 /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 上工作?我在 Google 上搜索,并看到此命令可以使其工作:# a2enmod rewrite但它没有 [我也重新启动了 apache2]。

我甚至将其添加RewriteEngine On到我的 /etc/apache2/sites-available/default 文件 [在 VirtualHost 内],但这也没有解决问题。

我正在从 Ubuntu 11.04 运行它。任何帮助都值得感激,谢谢!

答案1

Debian 上默认配置的 apache 虚拟主机(我假设是 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 永远不会解析该文件。

相关内容