我有一个.htaccess文件,可以非常简单地重写页面名称。这是文件的内容:
Options +FollowSymlinks
RewriteEngine on
RewriteRule setup setup.php [NC]
我现在想停止重写setup.php的设置 - 我该怎么做?我已经尝试从文件中删除该行,我已经尝试删除该文件并重新启动apache,它仍然仍然重写设置到setup.php。我怎么让它停下来?它似乎完全忽略了我创建的任何其他.htaccess文件,并且没有任何内容写入错误日志。是在某处缓存文件吗?我该如何阻止它?
我在ubuntu上使用apache2。
答案 0 :(得分:22)
如果由于重定向在浏览器中缓存而导致htaccess文件无法更新时出现问题。您可以使用Google Chrome浏览器或Safari等Webkit浏览器打开隐私浏览会话或隐身窗口。
每次更新htaccess文件时,都需要关闭所有隐身窗口/标签,然后再打开一个新窗口/标签。隐身窗口不会在当前会话之外写入缓存,也不会在初始加载时使用现有缓存。它是在测试时绕过缓存问题的好方法,也是查看您所遇到的问题是否由浏览器缓存引起的好方法。
我不确定,但Firefox和更新版本的IE可能有类似的功能。
答案 1 :(得分:18)
问题是MultiViews
已启用。如果可能,MultiViews
会自动为任何请求的网址添加扩展名。这与你的RewriteRule无关;恰好你正在重写setup
到setup.php
所以MultiViews
并且你的规则做了同样的事情。
将-MultiViews
添加到Options
指令以禁用它。
答案 2 :(得分:1)
1)检查以确保 nginx 不会对您造成任何问题 - 我只是将其关闭,但我确信如果您想使用它,有办法正确设置它。 (对我来说,它默认设置在MediaTemple的最新DV服务器上。)
2)尝试将此添加到httpd.conf或vhost.conf或主目录的htaccess文件中食物链上的其他一些配置文件中:
Header merge Cache-Control no-cache env=NO_CACHE
Header merge Cache-Control no-store env=NO_STORE
答案 3 :(得分:-2)
解决方案是,打开文件/ etc / apache2 / sites-available / default并更改:
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
进入这个:
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
请注意AllowOverride指令 - 此文件显然会覆盖其他地方的所有其他指令。