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

Posted

技术标签:

【中文标题】如何将任何子域请求重定向到asp.net中的主域【英文标题】:How to Redirect any subdomain request to main domain in asp.net 【发布时间】:2012-07-10 07:54:47 【问题描述】:

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

subdomain.domain.com  

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

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

我使用 asp.net 和 IIS 7.5 和 Visual Studio 2010

谢谢。

【问题讨论】:

快速google search 返回了seemingly pertinent article。您还有其他想要实现的目标吗? 是的,我试了一下。但找不到任何东西.... 【参考方案1】:

使用 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 重写模块是这里的方法。

干杯

【讨论】:

是的...我将它放在配置中...但是当我运行网站并尝试 s1.localhost.com 时,浏览器显示“找不到服务器”错误 为什么你不使用 而不是 domain.comR:0" /> ???【参考方案2】:

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

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

【讨论】:

将其他答案中的代码添加到每个子域的 web.config 中,您就可以使用子域了。

以上是关于如何将任何子域请求重定向到asp.net中的主域的主要内容,如果未能解决你的问题,请参考以下文章

htaccess Mod_Rewrite 从主域到子域

域重定向到www时如何将www子域重定向到非www

.htaccess - 将旧网站重定向到主域,但也将一些内容重定向到主域的子域

如何使用 Firebase 身份验证和托管将登录用户重定向到子域?

301从主域(www和非www)重定向到子域

PHP:将主域重定向到https:// www,子域重定向到https://(不带www)