在 apache/centos Web 伺服器上重定向頁面的最佳方式
我有一個使用虛擬主機在 1 個 IP 地址之外執行 2 個網站的 centos 6.5 Web 伺服器。
domain1.com 和 domain2.com - 都託管在上面的同一個 Web 伺服器上。
我需要將大約 40 個頁面從 domain1 重定向到 domain2,“例如”:
domain1.com/page1 -> domain2.com/new-page-1 domain1.com/welcomepage -> domain2.com/new-welcome-page domain1.com/johnsmith -> domain2.com/elvis domain1.com/test -> domain2.com/production
*請注意,我重定向的頁面不在相同的結構/名稱下,它們轉到完全不同的結構/名稱。
誰能建議我可以/需要做什麼來完成這項任務?
編輯#1 我嘗試通過 httpd.conf 文件中的 VirtualHost 部分執行此操作。請參閱下面的我的條目。
<VirtualHost *:80> ServerName domain1.com ServerAlias www.domain1.com RedirectPermanent / http://www.domain2.com/page12345/ </VirtualHost> <VirtualHost *:80> ServerName domain1.com ServerAlias www.domain1.com RedirectPermanent /AboutUs/Founders http://www.domain2.com/about-us-founders/ </VirtualHost>
在上述兩個條目中,只有第一個可以正常工作並正確重定向。第二個重定向到:http ://www.domain2.com/page12345/AboutUs/Founders 有 什麼想法嗎?
在這種情況下,最簡單的解決方案通常是最好的;在 domain1 VirtualHost 配置中添加 40 個重定向指令,您需要做出的唯一選擇是重定向的永久或臨時狀態:
<VirtualHost *:80> Servername domain1.com RedirectTemp /page1 http://domain2.com/new-page-1 RedirectPermanent /welcomepage http://domain2.com/new-welcome-page </VirtualHost>
回應上面的編輯#1:
當您在 ServerName 或 ServerAlias 中使用多個具有相同域名的 VirtualHost 節時,只有第一個有效,後續的將被忽略。
單個 VirtualHost 節可以包含多個 Redirect 指令,因此將第二個 Redirect 指令移動到第一個 virtualhost 節並刪除第二個。
第二次閱讀上面連結中的手冊 真的很有幫助:
任何以 URL-path 開頭的請求都會在目標 URL 的位置向客戶端返回一個重定向請求。匹配的 URL 路徑之外的其他路徑資訊將附加到目標 URL。
範例:
Redirect /service http://foo2.example.com/service
如果客戶端請求http://example.com/service/foo.txt>,它將被告知訪問<http://foo2.example.com/service/foo.txt
這與您對 www.domain1.com/AboutUs/Founders 的請求所觀察到的完全一致,該請求觸發
RedirectPermanent / http://www.domain2.com/page12345/
將原始請求重定向到 www.domain2.com/page12345/AboutUs/Founders您可以通過正確排序 Redirect 行來解決這個問題,因為 Apache 將按順序處理 Redirect 指令。從最長的 URL 路徑開始,否則它們會被較短目錄上的有效重定向擷取。
<VirtualHost *:80> Servername domain1.com Redirect /AboutUs/Founders http://www.domain2.com/about-us-founders/ Redirect /AboutUs/ http://www.domain2.com/about-us/ Redirect /index.html http://www.domain2.com/page12345/ RedirectMatch ^ http://www.domain2.com/page12345/ </VirtualHost>
對於僅包含http://domain1.com的重定向請求,您通常使用一個
^
而不是/
經常顯式重定向 IndexDocument 的好主意,因此 /index.html 條目。