我正在尝试使用Apache Rewrite Engine,但由于它缓存了它的响应而遇到了问题。现在,如果我更改文件,它不会执行文件所说的内容,而是在我之前尝试过相同的URL时执行的操作。
例如,我尝试输入
localhost/api
但我还没有设定一个与之匹配的规则。服务器给了我404错误。我尝试添加一个适用于此URL的规则:
RewriteRule api/? api.php [L]
但它仍然给了我同样的错误。如果我尝试了一个像localhost / lapi这样的地址,我在添加规则之前没有输入,那就可以了。有没有办法清除此缓存并重新启动?我尝试使用apachectl -k restart
和apachectl -k graceful
重新启动apache,但我仍遇到同样的问题。有谁知道如何解决这个问题?
答案 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请求中存在的文件扩展名和内容首选项(即您可能不希望发生的事情)在文件的多个版本之间自动选择。当重写规则只删除脚本的扩展名时,会导致这种类似的混乱。)