2016-09-15 25 views
1

我是這個社區的新手,雖然聽說了很多。所以,我今天在這裏得到解決我的關於重定向301和301 redirectmatch重定向vs RedirectMatch

我試圖使用重定向404重定向頁面301類似的東西

Redirect 301 /part1-url http://domain.com/part1-url/part2-url/part3-url.html 

此規則曾作爲查詢之一一個惡夢,我的目標URL開始後失常和/part2-url/part3-url.html重複串獲得追加到我的detination URL成爲像 -

http:// domain.com/part1-url/part2-url/part3-url.html/part2-url/part3-url.html/part2-url/part3-url.html/part2-url/part3-url.html/part2-url/part3-url.html/part2-url&id=part3-url.html&var=part2-url&var2=part3-url 

然後我用RedirectMatch如下:

RedirectMatch 301 ^/part1-url$ http:// domain.com/part1-url/part2-url/part3-url.html 

它開始工作正常。

我無法理解爲什麼發生這種情況,以及第二個人是如何工作的。

我真的很感謝你的幫助。

+0

格式指導http://stackoverflow.com/editing-help – Ejaz

回答

4

Redirect應該重定向開始以字符串所有URL 。由於您重定向到的URL以該字符串開頭,因此您自然會立即重新定向。

RedirectMatch重定向匹配正則表達式的URL。您使用$作爲其中的一部分顯式匹配URL的末尾。這意味着「開始」是不夠的。

+0

感謝您的解釋。雖然,我重定向了一個其他URL,但其中有匹配的起始位置作爲目標網址,但它在Redirect 301中運行正常。源URL重定向 - http://www.mcraeeng.com/clark-reliance-water \t 目標URL - http ://www.mcraeeng.com/clark-reliance-water-columns/boiler-trim/products.html – user6835554

1

來自Apache。

重定向:

重定向指令通過詢問 客戶在新的位置重新獲取資源映射舊網址進入一個新的。

舊的URL路徑是一個以 斜槓開始的區分大小寫(%解碼)路徑。相對路徑是不允許的。

新的URL可能是以方案開頭的絕對URL,主機名爲 ,也可能是以斜槓開頭的URL路徑。在後一種情況下 將添加當前服務器的方案和主機名。

然後以URL-path開頭的任何請求都會返回一個重定向 請求到目標URL位置的客戶端。其他 超出匹配的URL路徑的路徑信息將被追加到 目標URL。

來源:Apache Redirect

RedirectMatch

該指令相當於重定向,但是利用正則表達式,而不是簡單的前綴匹配。提供的正則表達式與URL路徑相匹配,如果匹配,服務器會將所有帶括號的匹配項替換爲給定的字符串,並將其用作文件名。

來源:Apache RedirectMatch