如何重写URL在asp.net子域,而不实际创建服务器上的子域(How to rewrite URL

2019-07-21 02:31发布

我希望这不是我第一次问这个问题的SO。

我在我的网站和网址,使用query string值,例如: http://foo.com/xyzPage.aspx?barvalue=yehaa

http://yehaa.foo.com/

请建议怎么能不上服务器实际上创建子域来完成..

我已经安装了IIS服务器计算机,并使用Asp.net 4.0 7.5。

非常感谢

Answer 1:

编辑下面我们的看法:

要访问http://foo.com/xyzPage.aspx?barvalue=yehaa使用http://yehaa.foo.com/ ,你必须使用以下规则:

<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

如果你想阻止人们直接访问到http://foo.com?barvalue={C:1}您可以使用下面的规则。


你可以使用IIS的重写模块通过增加在下面的规则web.config文件:

<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>

它检查的网址完全一致xyzPage.aspx (没有之前或之后)。
它检查如果查询字符串包含barvalue参数(只有这一个),如果其值不为空。
如果这些2个条件都ok,它触发Redirecthttp://barvalue.original.host

你的问题指定Rewrite ,所以如果这真的是你想要做什么,更改操作type="Redirect"type="Rewrite"

重要提示 :您可能需要在应用程序请求路由模块安装和设置启用到代理模式Rewrite到不同的域。



文章来源: How to rewrite URL as subdomain in asp.net without actually creating a subdomain on server