Apache缓存网址,RewriteEngine导致问题

时间:2013-02-02 16:46:26

标签: apache mod-rewrite

我正在尝试使用Apache Rewrite Engine,但由于它缓存了它的响应而遇到了问题。现在,如果我更改文件,它不会执行文件所说的内容,而是在我之前尝试过相同的URL时执行的操作。

例如,我尝试输入

localhost/api

但我还没有设定一个与之匹配的规则。服务器给了我404错误。我尝试添加一个适用于此URL的规则:

RewriteRule api/? api.php [L]

但它仍然给了我同样的错误。如果我尝试了一个像localhost / lapi这样的地址,我在添加规则之前没有输入,那就可以了。有没有办法清除此缓存并重新启动?我尝试使用apachectl -k restartapachectl -k graceful重新启动apache,但我仍遇到同样的问题。有谁知道如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

首先,根据规则的上下文,您可能需要一个前导斜杠,如下所示:

RewriteRule api/? /api.php [L]

关于缓存,您是否启用了mod_cache?如果是这样,请禁用它并重新启动服务器。 mod_rewrite本身不进行任何缓存。另外一定要完全清除浏览器缓存,并注意如果您没有通过同一本地网络访问服务器,那么可能还会有其他缓存。

答案 1 :(得分:0)

此问题也可能由MultiViews选项引起,请参阅Apache doc。尝试省略Option MultiViews中的httpd.conf或将Options -MultiViews添加到.htaccess

MultiViews选项使Apache能够根据HTTP请求中存在的文件扩展名和内容首选项(即您可能不希望发生的事情)在文件的多个版本之间自动选择。当重写规则只删除脚本的扩展名时,会导致这种类似的混乱。)