2015-09-15 48 views
1

我正在開發一個網站項目,我們基本上從TYPO3移動到WordPress & Magento解決方案。.htaccess使用多個{QUERY_STRING}重寫規則s

在啓動新網站之前,我想添加重寫規則以將舊的(TYPO3,非SEF)URL指向相應的新網站。我有一個包含約1000個URL的Excel列表,我想以某種方式將其添加到htaccess並創建301。 如果你有更好的方法,我會很感激。

我所掙扎的是:

「老字號」 的URL結構看起來像?id=123\&user_e15proddb1_pi1[domain]=42

的correcponding新的URL會 /de/alle-produkte/neuheiten.html

RewriteEngine敘述是,RewriteBase是/。

我試圖

RewriteCond %{QUERY_STRING} ^id=123\&user_e15proddb1_pi1[domain]=42$ 
RewriteRule . /de/alle-produkte/neuheiten.html [R=301,L] 

隨着另外逃脫_[]與無濟於事。 我試圖通過

RewriteCond %{QUERY_STRING} ^id=123$ 
RewriteCond %{QUERY_STRING} ^user_e15proddb1_pi1[domain]=42$ 

隨後TheRule到{QUERY_STRING}小號單獨的兩成。也無濟於事。

重寫工作本身,因爲我試過

RewriteRule .id=123\&user_e15proddb1_pi1\[domain\]=42$ /de/alle-produkte/neuheiten.html [R=301,L] 

但是,只有工作沒有在一開始的問號。

你能給我提示我做錯了什麼嗎?

回答

1

您可以通過逃逸[]使用這樣的規則:

RewriteCond %{QUERY_STRING} ^id=123&user_e15proddb1_pi1\[domain\]=42$ 
RewriteRule^/de/alle-produkte/neuheiten.html? [R=302,L] 

還要注意?在目標URI的結尾去掉所有現有的查詢字符串,以防止重定向循環。

+1

我認爲點('.')作爲重寫URL的選擇器有點不對。 您的解決方案工作正常,非常感謝! –

+0

模式中的點是不匹配着陸頁的,因爲它使用'^ $'匹配。使用'^'來匹配所有的情況是比較安全的。 – anubhava

0

我得到了一個解決方案,並提出這一項工作:

RewriteCond %{QUERY_STRING} ^id=123\&user\_e15proddb1\_pi1\[domain\]=42$ 
RewriteRule (.*) /de/alle-produkte/neuheiten.html? [R=301,L] 

Proably一些與逃避這些字符正想錯了,當我嘗試了一遍又一遍。