【问题标题】:Redirect non-www to www with IIS URL Rewrite generically without hardcoding domain or TLCD使用 IIS URL 将非 www 重定向到 www 一般重写,无需硬编码域或 TLCD
【发布时间】:2015-07-09 21:12:15
【问题描述】:

我正在构建一个 ASP.NET CMS 驱动的 Web 应用程序,它将为不同域名下的多个网站提供服务。其中一些将使用 www 子域,其他将使用自定义子域。会有各种顶级国家域名。

我正在寻找一个通用的 IIS URL 重写规则,它将任何未指定子域的 URL 重定向到其 www 等效项。

当我说通用时,这意味着该规则不能对域名或顶级国家域进行硬编码。所以规则必须重定向 http://anything.anywhere/any-pathhttp://www.anything.anywhere/any-path 但离开 http://sub.anything.anywhere/any-path

我找到的最接近的是this,它仍然对 TLCD 进行硬编码。如果对 URL 重写的语法没有太多了解,我不确定如何处理任何 TLCD。

提前致谢。

更新:

受评论的启发,我尝试了正则表达式,但还没有找到不需要我对所有可能的 TLCD 列表进行硬编码的方法。我怀疑这是我能得到的最好的。任何人都可以改进或确认这是答案吗?

^([a-z]+[.](com|co.uk|de|fr|etc)+)*

【问题讨论】:

  • URL 重写只使用常规的 .NET 正则表达式(我相信!),所以得到一些与之相关的东西,它应该会奏效。建议使用 regexlib.com 进行测试。
  • 谢谢@ianbailey,我第一次尝试更新了我的问题,但正则表达式也不是我的强项!
  • 我也是,否则我会留下答案哈哈 :)

标签: asp.net iis seo url-rewrite-module


【解决方案1】:

我只是使用具有两个条件的重写规则做了完全相同的事情,一个是获取方案,一个是确定 www 是否丢失。该方案是必要的,因为重定向必须是绝对的,但如果您不支持可能被硬编码的 HTTPS。请记住,我还没有时间测试 HTTPS 部分,但很确定它会正常工作。

<?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <system.webServer>
            <rewrite>
                <rules>
                    <rule name="Root Redirect" stopProcessing="true">
                        <match url=".*" negate="false" />
                        <action type="Redirect" url="{C:1}://www.{HTTP_HOST}/{R:0}" />
                        <conditions trackAllCaptures="true">
                            <add input="{CACHE_URL}" pattern="^(.*)://" />
                            <add input="{HTTP_HOST}" pattern="^(?!www\.).*" />
                        </conditions>
                    </rule>
                </rules>
            </rewrite>
        </system.webServer>
    </configuration>

【讨论】:

  • 这就是我正在寻找的,反之亦然:从 www 到非 www。我不擅长正则表达式。有什么帮助吗?
  • 知道了:&lt;rewrite&gt; &lt;rules&gt; &lt;rule name="Canonical" stopProcessing="true"&gt; &lt;match url=".*" /&gt; &lt;conditions&gt; &lt;add input="{HTTP_HOST}" pattern="^www[.](.+)" /&gt; &lt;/conditions&gt; &lt;action type="Redirect" url="http://{C:1}/{R:0}" redirectType="Permanent" /&gt; &lt;/rule&gt; &lt;/rules&gt; &lt;/rewrite&gt; TLD 独立重定向从 www 到非 www 的解决方案
猜你喜欢
  • 1970-01-01
  • 2014-06-27
  • 1970-01-01
  • 1970-01-01
  • 2021-12-03
  • 2018-07-25
  • 2011-06-24
  • 2019-03-09
  • 2011-11-05
相关资源
最近更新 更多