我有一個URL並希望重定向到絕對URL。以下不適用於我:.htaccess規則爲301重定向到絕對url
Redirect 301 /changecurrency/3?returnurl=/9ct-gold-belcher-chain-tg40dc http://www.example.com/9ct-gold-belcher-chain-tg40dc
這是什麼問題?
我有一個URL並希望重定向到絕對URL。以下不適用於我:.htaccess規則爲301重定向到絕對url
Redirect 301 /changecurrency/3?returnurl=/9ct-gold-belcher-chain-tg40dc http://www.example.com/9ct-gold-belcher-chain-tg40dc
這是什麼問題?
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」)。這些文件出了名的錯誤,很難調試,他們真的放慢了服務器。它們僅提供作爲的情況下最後的選擇,你沒有對主機配置控制(讀:真的很便宜的託管服務提供商),或者如果你有依賴於寫自己的重寫規則(這是一個明顯的安全惡夢的應用)。
http get參數不是URL的一部分。如果您需要完全匹配您請求的請求(完全使用這些get參數),那麼您需要使用重寫模塊提供的'Rewriteond'。 – arkascha
謝謝@arkascha – Owen