我在.htaccess ( mod_rewrite )中使用以下内容从我的URL中删除尾部的斜线:
RewriteRule ^([a-z0-9_-]+)/$ $1 [L,NC,R=301]
当然,由于字符类不匹配斜杠,这适用于像some_page/这样的链接,而不是article/some_page/ 。
如果我在字符类中添加一个斜杠来创build[a-z0-9_/-] ,那么在尝试加载页面时会出现无限循环。 我也尝试使+非贪心使用+? ,但那也不pipe用; 也没有删除R=301redirect。
(如果它有所不同,页面加载, /article/some_page/实际上是/article/some_page/index.html ,我只是希望它显示为/article/some_page 。)
如果它有所作为
是的,它确实。 Apache(mod_dir)会发回一个redirect,如果你传递一个映射到一个没有尾随“/”的目录的URL,比如
[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