簡體   English   中英

如何在不在服務器上實際創建子域的情況下將URL重寫為asp.net中的子域

[英]How to rewrite URL as subdomain in asp.net without actually creating a subdomain on server

我希望這不是我第一次在SO上提出這個問題。

我在我的網站上有URL,並且使用query string值例如: http//foo.com/xyzPage.aspx?barvalue = yehaa

http://yehaa.foo.com/

請建議如何在不在服務器上實際創建子域的情況下完成它。

我在服務器機器上安裝了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}其中{C:1}是在foo.com之前輸入的任何值foo.com

如果您想阻止人們直接訪問http://foo.com?barvalue={C:1} ,您可以使用以下規則。


您可以通過在web.config文件中添加以下規則來使用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完全xyzPage.aspx (之前或之后沒有任何內容)。
它檢查查詢字符串是否包含barvalue參數(並且只包含此參數)以及它的值是否為空。
如果這兩個條件沒問題,它會觸發Redirecthttp://barvalue.original.host

您的問題指定了Rewrite ,因此如果您真的想要這樣做,請將操作type="Redirect"更改為type="Rewrite"

重要提示 :您可能需要安裝應用程序請求路由模塊 ,並在啟用代理模式的情況下進行設置以Rewrite到其他域。

暫無
暫無

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

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