【问题标题】:Intelligencia.UrlRewriter rule helpIntelligencia.UrlRewriter 规则帮助
【发布时间】:2010-04-20 11:53:56
【问题描述】:

我的以下规则适用于 .net.com、.mobi 等标准域名,但如果域名有 2 个部分,如 co.uk,则它不起作用。

如何调整它以使其同时与 .net、.com 和 .co.uk 一起使用?

            <if header="HTTP_HOST" match="^(?:www\.)?([^.]+)\.([^.]+)\.([^.]+)$">
            <set property="subdomain" value="$1"/>
            <set property="domain" value="$2"/>
            <set property="tld" value="$3"/>
            <rewrite url="~/default.aspx" to="~/PageEngine.ashx?subdomain=${subdomain}&amp;domain=${domain}.${tld}&amp;defaultpage=yes" processing="stop"/>
        </if>

【问题讨论】:

    标签: regex url-rewriting


    【解决方案1】:

    这个正则表达式,就像您发布的那个一样,将匹配一个在可选的“www.”之后由三个组件组成的 URL,除了最后一个组件可能是“co”。或“com”。加上任意两个字母。

    ^(?:www\.)?([^.]+)\.([^.]+)\.(com?\.[a-z]{2}|[^.]+)$
    

    (已编辑以满足评论中的扩展要求。)

    【讨论】:

    • 我首先将第一个答案标记为“答案”,但经过简短测试后,我发现它不适用于 www.subdomain,因此我已将您的答案标记为正确答案。我必须注意,您的答案不适用于任何其他选项(例如 com.tr)
    • 如果您想将“.co”或“.com”后跟 ccTLD(国家代码顶级域)作为一个单元进行匹配,您应该这样说。这些组合没有什么特别之处:真正的 TLD 仍然是“.uk”或“.tr”。
    • 我应该有。我知道它们并不特别,但我正在寻找与 .com、.net 等以及 ccTLD 匹配的解决方案
    【解决方案2】:

    以下正则表达式应该适合您:

    ^(?:www\.)??([^.]+)\.([^.]+)\.([^.]+|[^.]+\.[^.]+)$
    

    双“?”在“www”部分告诉正则表达式进行惰性匹配之后,它只会在必要时匹配 www。最后的“tld”部分将匹配一个部分(.net 或 .com)或两部分(.co.uk)的域名。

    【讨论】:

    • 抱歉,我一开始已将其标记为答案,但使用您的解决方案,而 subdomain.domain.com 工作正常 www.subdomain.domain.co.uk 没有 - nLL 7 分钟前
    • 它如何不适用于 www.subdomain.domain.co.uk?这是我得到的结果: subdomain="subdomain" domain="domain" tld="co.uk"
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-19
    • 1970-01-01
    • 1970-01-01
    • 2011-04-14
    • 1970-01-01
    • 1970-01-01
    • 2020-05-29
    相关资源
    最近更新 更多