0

我正在尝试 Apache Rewrite Engine,但遇到了问题,因为它缓存了它的响应。现在,如果我更改文件,它不会按照文件中的说明执行操作,而是执行我之前尝试相同 url 时执行的操作。

例如,我尝试输入

localhost/api

但我还没有制定与之匹配的规则。服务器给了我一个 404 错误。我试图添加一个适用于这个 url 的规则:

RewriteRule api/? api.php [L]

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

4

2 回答 2

0

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

RewriteRule api/? /api.php [L]

关于缓存,你启用了mod_cache吗?如果是这样,请禁用它并重新启动服务器。mod_rewrite 自己不做任何缓存。还要确保完全清除浏览器缓存,并注意如果您没有通过同一本地网络访问服务器,则可能会在此过程中发生其他缓存。

于 2013-02-03T00:01:32.057 回答
0

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

(该MultiViews选项使 Apache 能够根据 HTTP 请求中存在的文件扩展名和内容偏好(即您可能不希望发生的事情)在文件的多个版本之间自动选择。它可能导致这种奇怪的失败当重写规则只是删除脚本的扩展名时。)

于 2015-01-19T14:01:05.063 回答