Apache URL重写 - 删除仅从基址的尾部斜杠
问题描述:
我知道在这里有很多通过Apache URL重写问题的“删除尾部斜杠”,但我仍然没有找到一种方法(通过RewriteCond/RewriteRule或RedirectMatch )做什么似乎是一个非常简单的尾随斜线重定向仅在主机上的根网址:Apache URL重写 - 删除仅从基址的尾部斜杠
http://www.example.com/ - > http://www.example.com
我想这样做的唯一原因是搜索引擎优化 - 我有人告诉我,重定向到一个单一的经典的家庭网址是谷歌爬虫的方式。
问题是$ {REQUEST_URI}总是包含一个斜杠(意味着上面的两个URL具有相同的$ {REQUEST_URI}值),并且RewriteRule/RedirectMatch在$ {REQUEST_URI}之外运行。 RewriteCond可以使用其他服务器变量,但是我没有看到一个与主机和空请求匹配的整个URL。
由于我无法区分/和空,因此我无法删除尾部斜线而不会导致无限重定向循环。
# Causes infinite redirect loop
RewriteRule ^(.*)/$ $1 [R,L]
有关如何做到这一点的任何想法?这种事情非常简单,我只是想念?
答
你可以做,使用以下规则:
#If example.com is present, then remove/
RewriteCond %{HTTP_HOST} ^example.com [NC]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule^%1 [R=301,L]
测试此之前,请务必清除缓存。
这对HTTP没有任何意义。请求本身必须至少包含一个根路径'/'。你谈论链接标签的索引文本字段。 – Deadooshka