2014-05-17 48 views
0

林重定向這樣的:重定向添加%20HTTP結束URL的

example.com/category/name-of-title/number

這樣:

example.com/name-of-title/number

一切工作完美的除了它的加入%20HTTP到的結束重定向之後的網址如下所示:

example.com/name-of-title/number%20HTTP

這是我的代碼:

RewriteCond %{THE_REQUEST} /category/(.*)/(.*) [NC] 

RewriteRule^/%1? [R=301,L] 
+0

像'。*'這樣的模式可以吃掉所有東西,所以它可能是越野車。嘗試更具體的像這樣'RewriteCond%{THE_REQUEST}/category /([^/\] +)/ [NC]'(在那裏不需要第二個子模式)。 – Deadooshka

回答

0

因爲as the documentation statesTHE_REQUEST

「[t]的由瀏覽器向服務器發送他完整的HTTP請求線(例如,「GET/index.html的HTTP/1.1" )」

- 所以你的情況,這將是像GET /category/name-of-title/number HTTP/1.1,並將/category/(.*)/(.*)模式應用於此,結果由於正則表達式的貪婪導致第一個匹配部分(和第二個剩餘的1.1)的部分正好爲name-of-title/number HTTP

這是無稽之談無論如何要使用這個RewriteCond和值THE_REQUEST - 一個簡單的RewriteRule這應該完全正常工作:

RewriteRule ^category/(.*)/(.*)$ /$1/$2 [R=301,L] 

如果你想匹配任何這可能是背後category/反正,你甚至都不需要兩個捕獲的子模式,但可以簡單地使用

RewriteRule ^category/(.*)$ /$1 [R=301,L] 
+0

我試過上面的代碼,它不起作用。這是我原來的樣子。 – MichaelQ

+0

@ user1904598:在新瀏覽器中測試此規則。在新的瀏覽器中測試了 – anubhava

+0

。該URL不會重定向。它只適用於我的原始代碼,但添加了%20HTTP。嗯..所以奇怪,因爲我可以得到其他網址重定向只是這一個給我一個問題。 – MichaelQ

0

%20http是一個空的空間!

刪除該空格,此%20http將不再顯示。