不确定这个.htaccess规则集正在做什么

我已经inheritance了一个Web应用程序,并且在下面是一组.htaccess规则。 在我看来,他们什么都不做。 有人可以解释他们在做什么吗?

对我来说,它看起来像只匹配到站点根目录,检查目录是否不存在(!),然后301redirect到站点根目录。

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

它将删除任何URL末尾的斜杠

例如:

 https://example.com/welcome/ 

变为:

 https://example.com/welcome 

第二个RewriteCond指定该规则只在URL与磁盘上的现有目录(例如可能是文件)不匹配时自动匹配。

只要添加到OverCoder的答案…正如已经指出的,这段代码删除URL的末尾的斜线(目录除外)…

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

但是,这里的第一个RewriteCond指令确实是多余的,可以删除。 这只是简单地检查URL是以斜杠结束的,这就是RewriteRule 模式 (即。 ^(.+)/$ )已经build立的。

第二个RewriteCond指令确保我们不需要一个目录。 目录需要一个尾部的斜杠。 默认情况下,如果你请求一个没有的目录,mod_dir会附加一个结尾的斜杠。 所以,如果你使用mod_rewrite删除目录上的斜线,那么你可能会创build一个redirect循环。