如何将任何子域请求重定向到asp.net中的主域

时间:2012-07-10 19:01:26

标签: asp.net iis-7.5 http-redirect

我正在尝试将domain.com的所有子域请求重定向到www.domain.com,用户只能通过进入主域并点击链接访问网站的所有部分,例如,如果用户直接在以下地址中输入浏览器:

subdomain.domain.com  

OR

www.domain.com/post/showPost.aspx?pid=11

我想显示错误页面,然后重定向到www.domain.com

我使用asp.net和IIS 7.5以及visual studio 2010

谢谢。

2 个答案:

答案 0 :(得分:4)

使用URL重写模块可能是最佳选择。尝试使用类似于以下内容的配置:

<system.webServer>
    <rewrite>
        <rules>
            <clear />
            <rule name="Redirect to WWW" enabled="true" stopProcessing="true">
                <match url=".*" />
                <conditions logicalGrouping="MatchAll">
                    <add input="{HTTP_HOST}" pattern=".*" />
                </conditions>
                <action type="Redirect" url="http://www.domain.com/{R:0}" />
            </rule>
        </rules>
    </rewrite>
</system.webServer>

这将重定向而不显示错误页面。如果要显示错误页面,则需要重定向到获取返回URL的页面,并将客户端重定向到正确的位置。

正如@inspile所说,你在为网站的子页面做这件事时会遇到麻烦。您可以使用引用来确保它来自主站点上的链接。再次使用URL Rewrite模块就可以了。

干杯

答案 1 :(得分:0)

对于子域,您可以使用Web主机的控制面板重定向它们,或者如果您可以在可以远程访问的服务器上设置子域,请使用IIS管理器中的URL重写模块重定向子域的所有请求到你的www子域名。使用URL Rewrite,您不必显示错误页面,重定向将自动发生。

您无法限制用户仅使用链接访问网页。