htaccess文件以某种方式被缓存?

时间:2010-12-21 13:07:12

标签: apache .htaccess

我有一个.htaccess文件,可以非常简单地重写页面名称。这是文件的内容:

Options +FollowSymlinks
RewriteEngine on
RewriteRule setup setup.php [NC]

我现在想停止重写setup.php的设置 - 我该怎么做?我已经尝试从文件中删除该行,我已经尝试删除该文件并重新启动apache,它仍然仍然重写设置到setup.php。我怎么让它停下来?它似乎完全忽略了我创建的任何其他.htaccess文件,并且没有任何内容写入错误日志。是在某处缓存文件吗?我该如何阻止它?

我在ubuntu上使用apache2。

4 个答案:

答案 0 :(得分:22)

如果由于重定向在浏览器中缓存而导致htaccess文件无法更新时出现问题。您可以使用Google Chrome浏览器或Safari等Webkit浏览器打开隐私浏览会话或隐身窗口。

每次更新htaccess文件时,都需要关闭所有隐身窗口/标签,然后再打开一个新窗口/标签。隐身窗口不会在当前会话之外写入缓存,也不会在初始加载时使用现有缓存。它是在测试时绕过缓存问题的好方法,也是查看您所遇到的问题是否由浏览器缓存引起的好方法。

我不确定,但Firefox和更新版本的IE可能有类似的功能。

答案 1 :(得分:18)

问题是MultiViews已启用。如果可能,MultiViews会自动为任何请求的网址添加扩展名。这与你的RewriteRule无关;恰好你正在重写setupsetup.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指令 - 此文件显然会覆盖其他地方的所有其他指令。