Apache htaccess RewriteRule 删除尾随斜杠;无限循环?

Apache htaccess RewriteRule 删除尾随斜杠;无限循环?

.htaccess我在( )中使用以下内容mod_rewrite从我的 URL 中删除尾随斜杠:

RewriteRule ^([a-z0-9_-]+)/$ $1 [L,NC,R=301]

当然,由于字符类与斜杠不匹配,因此这对于像 这样的链接来说可以正常工作some_page/,但不是article/some_page/

如果我在字符类中添加斜线以制作[a-z0-9_/-],则在尝试加载页面时会出现无限循环。我还尝试+使用 制作非贪婪+?,但这也没有用;删除R=301重定向也没有用。

(如果有区别的话,要加载的页面/article/some_page/实际上是/article/some_page/index.html,我只是希望它显示为/article/some_page。)

答案1

如果有影响

是的。如果您传递的 URL 映射到不带尾随“/”的目录,Apache (mod_dir) 将发回重定向,例如

[colinm@example ~]$ curl -I http://localhost/somedir
HTTP/1.1 301 Moved Permanently
Date: Mon, 24 Oct 2011 11:48:37 GMT
Server: Apache/2.2.3 (Red Hat)
Location: http://localhost/somedir/
Content-Type: text/html; charset=iso-8859-1

相关内容