我的 /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 永远不会解析该文件。