2011-03-10 41 views
0

我需要一點ISAPI語法幫助,我即將把一個新的站點,並希望將舊論壇存檔到存檔子域。ISAPI重寫幫助重定向到子域

本次論壇是在ASP,目前擁有該URL

http://www.mywebsite.co.uk/forum/forum_posts.asp?TID=34419 http://www.mywebsite.co.uk/forum/forum_topics.asp?FID=47

我想爲每個請求該論壇是301重定向到:在論壇FO

http://archive.mywebsite.co.uk/forum/forum_posts.asp?TID=34419 http://archive.mywebsite.co.uk/forum/forum_topics.asp?FID=47

基本上什麼用帶.asp擴展名帶或不帶查詢字符串 - 任何幫助非常感謝。

感謝

回答

3

對於重定向的URL子域,它一直以來你的問題了幾個月,但也許這仍然會有所幫助。

假設你正在使用的ISAPI_Rewrite V3,試試這個:

RewriteCond %{HTTP:Host} ^www\. 
RewriteRule ^/forum/(.*\.asp)$ http://archive.mywebsite.co.uk/forum/$1 [NC,R=301] 

第一行查找主機以www開頭。 (帶有尾點)。這確保您不會無限循環,將歸檔文件重定向到自身。尾隨的點在挑選只有www,而不是其他像www2。

第二行尋找/forum/,然後捕獲(...)任何字符.*和文字點和ASP \.asp,結束URL $

然後去你的子域在/forum/文件夾(因爲/論壇/不捕獲,我們需要重複它),以及被捕獲的url的全部其餘部分$1

NC表示不區分大小寫,所以這一切可以混合使用大小寫。 R=301意味着重定向,並使其成爲一個永久的301重定向,因爲這不是臨時的。

在v3規則中,查詢字符串參數完全與規則分開處理,因此您不必在此處執行任何操作。如果沒有參數,那麼這個工作。如果有參數,就像上面的問題那樣傳遞它們。

這會忽略http vs https。它將重定向到http,因此如果原始爲https,則可能會出現瀏覽器警告。有辦法來處理它,但我不想混淆基本的答案。

在重寫規則中擁有域本身對我來說總是有點奇怪,因爲你可能想要移動它。您可以在第一行捕獲主機的其餘部分,並在第二行中使用它。

RewriteCond %{HTTP:Host} ^www\.(.*)$ 
RewriteRule ^/forum/(.*\.asp)$ http://archive.%1/forum/$1 [NC,R=301] 

這類似於上面,增加了WWW點後的主機被捕獲,該行(.*)$結束,我不知道$這裏需要的,但它使明確我們想要這一切。

RewriteCond捕獲以百分號進行編號,因此重寫規則中的%1將替換子域後面的主機,並且$1仍意味着替換捕獲的... asp網址。