2012-03-07 115 views
0

我有不同的URL兩個相同的網站:下ISAPI_Rewrite 301重定向舊域名新域名,運行ASP.NET4

http://www.oldsite.co.ukhttp://www.newsite.co.uk。我希望301將所有請求從舊站點重定向到每個擴展名(例如'index.htm','images/image.jpg','directory/subdirectory /'等)的新站點。所有對舊域中任何類型文件/文檔/路徑的引用都需要定向到新域中的相同位置。

這些網站運行使用.NET4的內容管理系統。

到目前爲止,我已經嘗試了這兩種方法:首先通過在IIS中設置永久重定向。這工作的程度,但給了我一個新的URL是這樣的:

http://www.newsite.co.ukeurl.axd/5e42bf571e13754bbed8710d 2d377a5d/

所有我已經能夠找出與問候到「eurl.axd」的東西是它是由引起在重定向期間以某種方式攔截請求的ASP.NET4框架。我找到的唯一的解決方案將涉及禁用asp.net 4(這不是一個選項,因爲CMS運行在此上)或做某種註冊表黑客,我真的不想做的事情(銘記在那裏是此服務器上的其他域)。

另一種選擇是使用ISAPI_Rewrite。我試過這個:

RewriteRule (.+) http://www.newsite.co.uk$1 [R=301,L] 

但是,這也給與eurl.axd的東西同樣的問題。所以,我想這一點,這消除了eurl.axd東西,但似乎只針對網站的首頁工作 - 沒有任何其他頁面或資源:

RewriteRule (.*)eurl.axd/.* http://www.newsite.co.uk/$1 [R=301,L] 

當我運行這沒有什麼錯誤日誌但重寫日誌顯示該規則未按需要工作,例如嘗試訪問「http://www.oldsite.co.uk/technical.aspx」只是加載該頁面在瀏覽器中(無重定向),並將其輸出日誌:

(2) init rewrite engine with requested uri /technical.aspx 
(1) Htaccess process request C:\Program Files\Helicon\ISAPI_Rewrite3\httpd.conf 
(1) Htaccess process request c:\inetpub\vhosts\oldsite.co.uk\httpdocs\.htaccess 
(3) applying pattern '(.*)eurl.axd/.*' to uri 'technical.aspx' 

有誰知道如何修改此規則,以便將所有資源從舊域重定向到新域?

非常感謝!

回答

0

謝謝大家。我最終解決這個問題的方式是刪除舊域中的所有文件,並刪除它對ASP.NET4的任何依賴關係(將應用程序池更改爲不使用.NET4等的應用程序池),然後設置簡單的永久重定向IIS。所以我根本沒有最終使用ISAPI_Rewrite-- IIS處理得很好。

所以,現在,任何在我的舊域指向新的域,這是完美的。

感謝您的指點人,進一步研究IIS非常有趣,我不經常這樣做。

1

在IIS中創建新的空白網站,將.htaccess與您的重定向規則添加到此網站,然後將www.oldsite.co.uk指向此網站。因此,您的.NET4 CMS不會在對舊網站的請求中執行,並且在重定向之前無法更改URL。

+0

這是一個有趣的選擇,謝謝。我需要100%確定,儘管在我這樣做之前,我的重定向解決方案重定向了所有資源。標準IIS6重定向是否執行此操作? – Dan 2012-03-07 14:21:16

+0

其實,如果我只是禁用ASP,會更進一步。在舊網站上的NET4,並設置通過IIS重定向將工作? – Dan 2012-03-07 14:22:45

+0

我可以確認此解決方案無效。它適用於主頁,但不適用於任何其他文件/文件夾/路徑。如果我創建一個新的域來進行轉發,那麼我基本上必須創建整個文件夾結構,但不使用.NET4,這不是一個解決方案。不過值得一試,謝謝。 – Dan 2012-03-07 15:49:54