簡體   English   中英

如何在 IIS7 上設置 URL Rewrite 以便多個子域重定向到正確的網站?

[英]How to set up URL Rewrite on IIS7 so that multiple subdomains redirect to the correct web site?

我問了一個關於如何讓多個子域都指向同一個站點的問題; 我接受的答案是使用 URL Rewrite。

涼爽的。 但是對於我來說,我無法弄清楚 URL Rewrite 是如何工作的,我認為自己是一個相對聰明的人。 |-) 很多問題...

  • 每個客戶(如果不是數千個,也會有數百個)都有自己的子域,例如customer1.mydomain.comcooldude.mydomain.com等。正則表達式為(.+)\.mydomain\.com ,所有這些URL 應該重定向到 IIS 上我命名為customers.mydomain.com的網站。 我在 URL Rewrite 上找到的所有示例都是關於引用文檔的,例如mydomain.com/thing.aspx?id=123mydomain.com/thing/123的更改,我對此並不真正感興趣。這是一個線索:正如您在下圖中看到的,“輸入”列總是顯示“'/' 之后的 URL 路徑”——但似乎沒有任何方法可以改變它。

URL 重寫圖片

  • 我假設重寫規則應該放在默認網站上,但我希望規則重定向到customers.mydomain.com網站。 你如何強制重定向到一個特定的網站,這樣我仍然可以看到子域名(它決定了我登錄的客戶網站)?

我想你想要做的就是為你的重寫規則添加一個輸入條件。 您可以在http://learn.iis.net/page.aspx/469/using-rewrite-maps-in-url-rewrite-module/的“從重寫規則引用重寫映射”部分閱讀相關內容。

這是一個我認為對你有用的例子:

<rule name="My Rule">
    <match url="(.+)?" negate="false" />
    <action type="Redirect" url="http://{C:1}.mydomain.com/{R:0}" />
    <conditions>
    <add input="{HTTP_HOST}" pattern="(.+)\.mydomain\.com" />
    </conditions>
</rule>

我為您的原始問題添加了一個答案,這反過來也回答了這個問題。 我認為對於您要嘗試做的事情,讀取主機標頭比進行重定向更容易。

如何以編程方式為 IIS7 創建子域?

用戶界面不是很好,但這可以僅使用 IIS URL 重寫模塊 GUI 完成,該 GUI 是按照這些說明通過 Microsoft Web 平台安裝程序安裝的。 據我所知,沒有任何方法可以從URL path after '/'更改輸入列中的值,但您仍然可以根據包括子域在內的整個 URL 選擇目標目的地(重寫 URL ) .

當您創建或編輯規則時,您采取的操作應設置為Rewrite Action Properties 的Rewrite URL字段(目標地址)可以包括來自 IIS 的內置服務器變量(在這種情況下是不夠的),以及來自您添加的 Conditions 的正則表達式捕獲組。 雖然您可能不希望條件過濾掉任何內容,但您可以創建一個足夠通用的條件,該條件還用於創建捕獲組值以在重寫 URL字段中引用。

在您的情況下,在 GUI 中編輯(或創建)重寫規則,展開條件區域,並添加基於SERVER_NAME的新條件。 在您的情況下,您可以輸入:

Condition input: {SERVER_NAME}
Check if input string: Matches the Pattern
Pattern: ^([-A-z0-9]+)\.(.*)$

如果您需要包含其他字符,您可能需要修改模式的第一部分。 它匹配來自www.google.com等輸入的子域。 確保此正則表達式足夠通用,不會過濾掉您要轉發的任何內容,因為條件旨在充當過濾器。

如果單擊“測試模式”,您可以查看是否創建了有效的正則表達式,還可以查看捕獲組的名稱,稍后您將在重寫 URL 字段中使用它。 由於我沒有創建任何其他條件,對於我的正則表達式,子域將具有值{C:1}

創建條件,然后轉到 Action Properties Rewrite URL 字段。 在你的情況下,你可以輸入

http://example.com/{C:1}

這應該會立即起作用,而無需手動編輯默認網站的任何 XML 配置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM