2017-02-13 102 views
-1

我有一個URL並希望重定向到絕對URL。以下不適用於我:.htaccess規則爲301重定向到絕對url

Redirect 301 /changecurrency/3?returnurl=/9ct-gold-belcher-chain-tg40dc http://www.example.com/9ct-gold-belcher-chain-tg40dc 

這是什麼問題?

+0

http get參數不是URL的一部分。如果您需要完全匹配您請求的請求(完全使用這些get參數),那麼您需要使用重寫模塊提供的'Rewriteond'。 – arkascha

+0

謝謝@arkascha – Owen

回答

1

http get參數不是URL的一部分。如果您需要完全匹配的請求嘗試(與這些人恰恰是得到參數),那麼你就需要使用重寫模塊提供了一個Rewriteond S:

RewriteEngine on 
RewriteCond %{QUERY_STRING} returnurl=/9ct-gold-belcher-chain-tg40dc 
RewriteRule ^/?changecurrency/3 http://www.example.com/9ct-gold-belcher-chain-tg40dc [END,R=301,QSD] 

上述規則將在HTTP服務器主機配置工作並且還在動態配置文件(.htaccess)中。

顯然,重寫模塊必須加載到http服務器。

如果您使用的是舊版本的Apache http服務器,則可能需要用L標誌替換END標誌。

還有一個常規提示:你應該總是喜歡把這樣的規則放在HTTP服務器主機配置中,而不是使用動態配置文件(「.htaccess」)。這些文件出了名的錯誤,很難調試,他們真的放慢了服務器。它們僅提供作爲的情況下最後的選擇,你沒有對主機配置控制(讀:真的很便宜的託管服務提供商),或者如果你有依賴於寫自己的重寫規則(這是一個明顯的安全惡夢的應用)。

+0

不錯的答案+1,但我不認爲你應該使用END來進行外部重定向。 – starkeen

+0

@starkeen永遠願意學習......你會不會詳細闡述? – arkascha

+0

END標誌主要與內部重寫規則一起用於終止規則的處理。與您的示例中的外部請求無關。 – starkeen