所以我一直在努力去擺脫尾隨?在網址上避免SEO重複。基本上我有一個像刪除尾隨時重定向有趣的事情?
www.example.com/some/thing?
,我需要它重定向到
www.example.com/some/thing
我已經在我的htaccess的以下內容:
# Remove trailing ?
RewriteCond %{REQUEST_METHOD} (GET) [NC]
RewriteCond %{THE_REQUEST} \?\ HTTP [NC]
#RewriteRule ([a-zA-Z0-9-/.=&:?]*)\?$ $1 [R=301,L]
RewriteRule ^(.*)$ $1 [r=301,l]
我測試了我的正則表達式在第4行使用測試儀,它完全適用於整個網址。 然後我使用htacces來試着查看變量THE_REQUEST返回的內容,並且我注意到我的代碼正在工作,但出現了一些錯誤。這就是我在上面的代碼中rewrite.log得到:
127.0.0.1 - - [22/Jan/2013:16:08:09 --0800] [www.example.com/sid#2cb480][rid#eb90f8/initial] (2) init rewrite engine with requested uri /some/thing
127.0.0.1 - - [22/Jan/2013:16:08:09 --0800] [www.example.com/sid#2cb480][rid#eb90f8/initial] (3) applying pattern '^(.*)$' to uri '/some/thing'
127.0.0.1 - - [22/Jan/2013:16:08:09 --0800] [www.example.com/sid#2cb480][rid#eb90f8/initial] (4) RewriteCond: input='GET' pattern='(GET)' [NC] => matched
127.0.0.1 - - [22/Jan/2013:16:08:09 --0800] [www.example.com/sid#2cb480][rid#eb90f8/initial] (4) RewriteCond: input='GET /some/thing? HTTP/1.1' pattern='\?\ HTTP' [NC] => matched
127.0.0.1 - - [22/Jan/2013:16:08:09 --0800] [www.example.com/sid#2cb480][rid#eb90f8/initial] (2) rewrite '/some/thing' -> '/some/thing'
127.0.0.1 - - [22/Jan/2013:16:08:09 --0800] [www.example.com/sid#2cb480][rid#eb90f8/initial] (2) explicitly forcing redirect with http://www.example.com/some/thing
127.0.0.1 - - [22/Jan/2013:16:08:09 --0800] [www.example.com/sid#2cb480][rid#eb90f8/initial] (1) escaping http://www.example.com/some/thing for redirect
127.0.0.1 - - [22/Jan/2013:16:08:09 --0800] [www.example.com/sid#2cb480][rid#eb90f8/initial] (1) redirect to http://www.example.com/some/thing? [REDIRECT/301]
從我瞭解的日誌被正確重定向,但由於某種原因在最後的重寫規則後追加的問號時,它的重定向。 任何想法發生什麼事以及如何解決這個問題?
另外,當我「取消」通過取消註釋第4行和註釋第5行apache不遵循規則,因爲它是針對/ some /字符串進行測試,而不是針對整個url(URI + QUERY)。我如何使用RewriteRule而不是僅僅通過URI來對整個網址進行apache檢查?
注:網址是動態的,所以我不能只是硬編碼重定向。