我希望這不是我第一次在SO上提出這個問題。如何在asp.net中將URL重寫爲子域而不實際創建服務器上的子域
我已經在我的網站網址和使用query string
值 例如:http://foo.com/xyzPage.aspx?barvalue=yehaa
到
請建議如何才能實現無實際上在服務器上創建子域名 ..
我已經IIS 7.5安裝服務器上,並使用Asp.net 4.0。
非常感謝
我希望這不是我第一次在SO上提出這個問題。如何在asp.net中將URL重寫爲子域而不實際創建服務器上的子域
我已經在我的網站網址和使用query string
值 例如:http://foo.com/xyzPage.aspx?barvalue=yehaa
到
請建議如何才能實現無實際上在服務器上創建子域名 ..
我已經IIS 7.5安裝服務器上,並使用Asp.net 4.0。
非常感謝
編輯以下我們的看法:
要使用http://yehaa.foo.com/
http://foo.com/xyzPage.aspx?barvalue=yehaa
訪問,你必須使用以下規則:
<rules>
<rule name="Rewrite subdomains">
<match url="^/?$" />
<conditions>
<add input="{HTTP_HOST}" pattern="^(.+)\.foo\.com$" />
</conditions>
<action type="Rewrite" url="http://foo.com?barvalue={C:1}" />
</rule>
</rules>
它結束與否與每個URL匹配一個/
並在foo.com
之前使用某些東西,然後將其重寫爲http://foo.com?barvalue={C:1}
,其中在foo.com
之前輸入的值是。
如果您想阻止人們直接訪問http://foo.com?barvalue={C:1}
,則可以使用下面的規則。
你可以通過在web.config
文件中添加下列規則使用Rewrite module for IIS:
<rewrite>
<rules>
<rule name="Redirect to Subdomains" stopProcessing="true">
<match url="^xyzPage.aspx$" />
<conditions>
<add input="{QUERY_STRING}" pattern="^barvalue=(.+)$" />
</conditions>
<action type="Redirect" url="http://{C:1}.{HTTP_HOST}" appendQueryString="false" />
</rule>
</rules>
</rewrite>
它檢查URL(之前或之後沒有)恰好xyzPage.aspx
匹配。
它檢查查詢字符串是否包含參數barvalue
(僅此參數),以及參數值是否爲空。
如果這兩個條件都沒問題,它會觸發Redirect
至http://barvalue.original.host
。
您的問題指定Rewrite
,所以如果這確實是您想要做的,請將動作type="Redirect"
更改爲type="Rewrite"
。
重要:您可能需要Application Request Routing module安裝和啓用Rewrite
不同的域的代理模式設置。
我已更新我的問題。請立即查看更新後的問題。 – 2013-03-11 11:33:47
@MayankPathak當你說「沒有真正在服務器上創建子域名」時,你希望用戶看到什麼?服務器應該如何知道要渲染的內容? – cheesemacfly 2013-03-11 14:53:33
@nicolas ..我想要的是,將有一個頁面和產品將由'查詢字符串'在頁面上有所不同。並基於查詢字符串我想做子域名...我只是想重寫URL作爲子域.. – 2013-03-12 05:52:38
您可以使用IIS的重寫模塊來完成此操作。 – cheesemacfly 2013-03-06 21:08:33
請舉個例子..? – 2013-03-07 06:47:00