對於重定向的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網址。