2012-09-26 149 views
1

我正在升級將使用新鏈接的站點。可以從舊URL中找出新的URL,因此我想在.htaccess中創建一些301條目以轉發舊鏈接。.htaccess 301使用變量重定向

我知道,這是可能的

Redirect 301 /orginalURL.html http://website.com/newURL.php 

但是我需要使用舊的URL的一部分,以構建新的URL。這可能嗎? 實例舊的URL

/index.php?page=/shop/bcat&c=47 

,並應改爲

/se/category/47 

在這種情況下,47是我需要從舊的URL到新拿到鑰匙。另外,我不能指望/index.php存在於所有舊鏈接中,因此它們可能看起來也像/?page =/shop/bcat & c = 47 。

任何人誰可以幫助我在這裏,我也許能找出的其餘重定向自己:)

回答

4

你需要使用mod_rewrite來匹配查詢字符串。在你的文檔根目錄下的htaccess文件中試試這樣的:

RewriteEngine On 
RewriteCond %{QUERY_STRING} page=/shop/bcat&c=([0-9]+) 
RewriteRule ^/?(index.php)?$ http://website.com/se/category/%1? [L,R=301] 
+0

它的確做了我想要的工作。唯一的問題是查詢字符串被附加到我重定向到的鏈接上,導致RewriteCond再次匹配,使我處於循環狀態。我嘗試添加QSD標誌,但遇到了以下錯誤:「RewriteCond:bad flag delimiters」 – Anders

+0

@Anders對不起,在URL末尾需要有一個'?':'http://website.com/se/類別/%1?'。我編輯了答案。 –

+0

非常感謝!它工作完美 – Anders