2017-08-03 117 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] 

測試此之前,請務必清除緩存。