2014-02-07 95 views
0

我一直在谷歌上搜索了一段時間試圖找出如何到以下網址重定向:使用的.htaccess重定向URL以參數爲URL以Paramters

http://mysite.org/old-folder/?abc=1144

到一個新的URL:

http://mysite.org/new/folders/?xyz=1144

其中數字1144是動態的。

我得儘可能這一點,但似乎無法得到它的工作:

RewriteRule ^old-folder/\?abc=([0-9]+)(/)?$ new/folders/\?xyz=$1 [R=301] 
+0

對於x個time:'RewriteRule'只查看URL的_path_組件 - 如果你想檢查_query string_,你必須使用'RewriteCond' ... – CBroe

+0

Thanks @CBroe。在我對此非常有限的知識中,我認爲只有當您在查詢字符串中查找某個參數的特定值時,我才認爲這是錯誤的。我在其他網站上看到過不好的例子,如果它們是動態的,它們不會使用RewriteCond作爲查詢字符串。 – jsonfry

回答

1

一些更多的研究,我想出了這個之後:

RewriteCond %{QUERY_STRING} ^abc=([0-9]+)$ 
RewriteRule ^old-folder new/folders/?xyz=%1 [L,R=301] 

如果別人說到這個在未來,它不僅會匹配數值爲'abc'的值。如果你想讓它匹配任何替換這第一行:

RewriteCond %{QUERY_STRING} ^abc=(.*)$ 

爲標誌的解釋[L,R = 301]參見Apache的文檔: http://httpd.apache.org/docs/current/rewrite/flags.html

0

你不能匹配查詢字符串RewriteRule

嘗試在DOCUMENT_ROOT/.htaccess文件中這樣的規則:

RewriteEngine On 
RewriteBase/

RewriteCond %{QUERY_STRING} (?:^|&)abc=([^&]*) [NC] 
RewriteRule ^old-folder/$ new/folders/?xyz=%1 [L,NC]