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