.htaccess仅在request_uri / mod上有无限循环

时间:2015-04-20 10:11:36

标签: apache .htaccess mod-rewrite redirect

我在使用UwAmp,Apache / 2.2.22 PHP版本5.3.25的localhost上。站点位于虚拟主机中。一切都工作100%,直到我想执行没有尾随削减政策。政策措辞奇怪:

# enforce no trailing/
RedirectMatch 301 ^(.+)/$   $1

^^重定向匹配适用于我尝试过的所有请求,但modmod/除外。
例如:ip:port / aaaa工作,但ip:port / mod或ip:port / mod / loops infinitly

我已禁用以前的RedirectMatch并尝试使用纯mod_rewrite:

RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]

同样的事情。除了/ mod或/ mod /

之外,所有请求都按预期工作

我已经从.htaccess清除了一切,只留下了这两个条件中的一个,但是奇怪的行为仍然存在。

第一:为什么会这样?第二:知道怎么解决吗? 我会提供更多数据,只需说明您需要的信息。

EDIT1: 刚刚检查过,所有虚拟主机上都存在同样的问题,没有斜杠策略 edit2:不,有一个网站,有相同的设置,但没有/甚至在mod上工作:(

1 个答案:

答案 0 :(得分:1)

由于mod是现有文件夹,因此看起来这是一个目录斜杠问题。

使用Apache,您可以通过在root htaccess中添加此行来禁用它(在顶部,它很好)。

DirectorySlash Off

您也可以在<IfModule mod_rewrite.c>块中添加它 这样,如果启用了mod_rewrite,它将被禁用 (这意味着由于您的规则没有斜杠)。这实际上是最好/最干净的解决方案。

注意:我没有看到使用它的任何缺点,除非您有一个文件(例如,没有扩展名)和一个文件夹,两者共享相同的名称。