我使用的Apache的.htaccess做重定向:Apache的重定向曖昧URI
RedirectMatch "^/mysubpage/?" http://domain.com/page [R=301,L]
鏈接:http://domain.com/mysubpage
但當頁面加載,鏈接更改爲:?http://domain.com/page/URI =/mysubpage/
它爲什麼附加「?uri」查詢字符串?
我使用的Apache的.htaccess做重定向:Apache的重定向曖昧URI
RedirectMatch "^/mysubpage/?" http://domain.com/page [R=301,L]
鏈接:http://domain.com/mysubpage
但當頁面加載,鏈接更改爲:?http://domain.com/page/URI =/mysubpage/
它爲什麼附加「?uri」查詢字符串?
最有可能你的http://domain.com/subpage已經是一個重寫URL?
試試這個:
RedirectMatch "^/mysubpage/(.*)" http://domain.com/page/$1? [R=301,L]
的問號在您的重定向目的地的結束是防止附加舊的查詢字符串給它(這是默認行爲)。
我認爲這是因爲?在你的重定向匹配正則表達式中,但我不完全確定你想要做什麼。如果你想要獲取的最後一個斜槓(什麼是出現在您的URI =子)以下的水珠和使用,作爲一個不同的URI的一部分,那麼你想要的是像這樣
RedirectMatch "^/mysubpage/(.*)" http://domain.com/page/$1 [R=301,L]
這將採取任何請求http://domain.com/mysubpage/alpha.php
並將其重定向至http://domain.com/page/alpha.php
。如果在另一方面,你不關心什麼是在請求中的斜線後mysubpage那麼你可以做這樣的事情:
RedirectMatch "^/mysubpage/.*" http://domain.com/page [R=301,L]
這將下降請求的其餘部分,並重定向到http://domain.com/page
。
HTH
我不在乎斜線後面是什麼。我嘗試了你的第二個例子,但仍然把舊的uri作爲重定向後的查詢字符串:'http://domain.com/page/?uri =/mysubpage /' – Dejan
也是'?'在我的RedirectMatch中是將前面的/標記爲可選項。 – Dejan