我需要爲傳入請求重寫「主機名」{HTTP_HOST}。是否有可能使用IIS 7重寫模塊進行此操作?
我想重寫http://abc.xyz.com/ *至http://xyz.com/sites/abc/ *。這是針對內部使用{HTTP_HOST}的SharePoint網站完成的。Url用IIS 6/7重寫 - 重寫主機名{HTTP_HOST}
是否有任何Url Rewriters在那裏讓我更改IIS的{HTTP_HOST}變量?
親切的問候,
我需要爲傳入請求重寫「主機名」{HTTP_HOST}。是否有可能使用IIS 7重寫模塊進行此操作?
我想重寫http://abc.xyz.com/ *至http://xyz.com/sites/abc/ *。這是針對內部使用{HTTP_HOST}的SharePoint網站完成的。Url用IIS 6/7重寫 - 重寫主機名{HTTP_HOST}
是否有任何Url Rewriters在那裏讓我更改IIS的{HTTP_HOST}變量?
親切的問候,
我不熟悉的IIS 7重寫模塊,但ISAPI_Rewrite可以改變幾乎任何你想要的HTTP標頭。有一個免費版本,這對我們的網站來說已經足夠了,可能已經足夠用於你的網站了。
如果你想避免重定向(根據你對Evgeny的評論),唯一的選擇是server.transfer。使用server.transfer將處理髮送到服務器上的不同頁面,客戶端不知道(在頁面之間沒有往返客戶端的往返)。
除了server.transfer實際的重定向是非常典型的ISAPI_Rewrite是一個流行的工具,並且Evgeny提到的非常有效。
更新:這將做重定向,而不是重置變量。因爲我覺得它的整潔,我不會刪除這個答案,但它不回答你想
我的Economist.com
這樣做是一個非常簡單的方式正是您有一個站點中的兩個IIS網站,他們共享相同的webroot。主IIS網站保持不變,正在監聽當前主機頭,例如
216.35.68.215 economist.com
另一個IIS站點在輸入其他主機頭部的情況下監聽IP地址。
即
216.35.68.215 economist.co.uk
在「主目錄」第二網從有重定向設置將糾正任何主機名的人在你的網站上
集「上面輸入的準確URL」到達和 「此資源的永久重定向」,並輸入您的完全合格的主機名條目如下
http://www.economist.com $ S $ Q
$ S $ Q將維護您輸入的其他主機名稱上的所有URL。
隨意測試這個
http://www.economist.co.uk/world/americas/
只會推你
http://www.economist.com/world/americas/
這意味着你不必跑,至少因爲這個原因,在相當昂貴的IIS重寫模塊
是的,可以使用IIS 7重寫模塊。您可以使用GUI根據this blog post在IIS7中設置重定向。
也可以使用每個this SO answer的命令行。
在這兩個例子中,你必須有一個單獨的網站設置與自己的主目錄,並綁定到你想要重定向的域。我希望這是有道理的。
IIRF是免費的,並允許您重寫頭文件,包括HTTP_HOST。
我想重寫http://abc.xyz.com/ *至http://xyz.com/sites/abc/ *。這是針對內部使用{HTTP_HOST}的SharePoint網站完成的。
您需要重寫Host和Url。這使它有點複雜。在這個規則集,我這樣做的步驟,並使用新的報頭存儲步驟之間的狀態:
# detect whether we're using the abc host
RewriteCond %{HTTP_HOST} ^abc\.xyz\.com$
RewriteHeader Host-Needs-Rewrite: ^$ YaHuh
# rewrite the Host: header to the alt host name if necessary
RewriteCond %{HTTP_HOST_NEEDS_REWRITE} ^YaHuh$
RewriteCond %{HTTP_HOST} ^(?!xyz\.com)(.+)$
RewriteHeader Host: .* xyz.com
# rewrite the Url to the appropriate place
RewriteCond %{HTTP_HOST_NEEDS_REWRITE} ^YaHuh$
RewriteCond %{HTTP_HOST} ^xyz\.com$
RewriteRule /(.*)$ /sites/abc/$1 [L]
你可以通配符ABC的一部分了。像這樣:
# detect whether we're using the abc host
RewriteCond %{HTTP_HOST} ^([^.]+)\.xyz\.com$
RewriteHeader Host-Needs-Rewrite: ^$ %1
# rewrite the Host: header to the alt host name if necessary
RewriteCond %{HTTP_HOST_NEEDS_REWRITE} ^.+$
RewriteCond %{HTTP_HOST} ^(?!xyz\.com)(.+)$
RewriteHeader Host: .* xyz.com
# rewrite the Url to the appropriate place
RewriteCond %{HTTP_HOST_NEEDS_REWRITE} ^(.+)$
RewriteCond %{HTTP_HOST} ^xyz\.com$
RewriteRule /(.*)$ /sites/%1/$1 [L]
您可以使用IIS 7 URL重寫模塊2.0更改HTTP_HOST服務器變量。有關如何操作的更多信息,請參閱Setting HTTP request headers and IIS server variables。
我不想做重定向。相反,我想更改當前請求的{HTTP_HOST}。 – 2009-02-15 08:48:55
ISAPI_Rewrite可以做到這一點 - 它可以爲當前請求更改「主機:」HTTP標頭,就像它「重寫」一個URL時不會發送重定向到客戶端一樣。 – EMP 2009-02-15 09:58:04