2017-08-03 123 views
0

我知道在这里有很多通过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] 

有关如何做到这一点的任何想法?这种事情非常简单,我只是想念?

+0

这对HTTP没有任何意义。请求本身必须至少包含一个根路径'/'。你谈论链接标签的索引文本字段。 – Deadooshka

回答

0

你可以做,使用以下规则:

#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] 

测试此之前,请务必清除缓存。