【问题标题】:How to correctly rewrite only mysite.com to www.mysite.com and nothing else?如何正确地将 mysite.com 仅重写为 www.mysite.com 而没有别的?
【发布时间】:2023-03-24 08:46:01
【问题描述】:

这是 Web.config 中将裸域重定向到 www 的部分。

<system.webServer>
<rewrite>
  <rules>
    <clear/>
    <rule name="WWW Rewrite" enabled="true">
      <match url="(.*)"/>
      <conditions>
        <add input="{HTTP_HOST}" negate="true" pattern="^www\."/>
      </conditions>
      <action type="Redirect" url="http://www.{HTTP_HOST}/{R:0}" appendQueryString="true" redirectType="Permanent"/>
    </rule>
  </rules>
</rewrite>
</system.webServer>

问题是它还在任何其他地址前添加了“www”,例如:

  • localhost:62083 -> www.localhost:62083
  • static.mysite.com -> www.static.mysite.com
  • mysite.hostcompany.com -> www.mysite.hostcompany.com

我只需要它来重定向 mysite.com 而不需要其他任何东西。如何修复规则?

【问题讨论】:

    标签: regex asp.net-mvc iis url-rewriting


    【解决方案1】:

    我觉得你想多了。我无法对其进行测试,但最简单的方法似乎是将您的条件更改为 只需 匹配您要重写的名称。

    <add input="{HTTP_HOST}" negate="false" pattern="^mysite.com$"/>`?
    

    【讨论】:

      【解决方案2】:

      尝试更改此行:

      <add input="{HTTP_HOST}" negate="false" pattern="^mysite.com$"/>
      

      【讨论】:

        【解决方案3】:

        如果pattern 是正则表达式,您可以使用

        ^[^\.]\.[^\.]$
        

        仅对没有子域的请求进行重定向(仅包含一个点)

        • 优势:独立于域名
        • 缺点:不适用于 www.mysection.company.com

        【讨论】:

          猜你喜欢
          • 2012-12-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-10-02
          • 1970-01-01
          • 1970-01-01
          • 2010-11-25
          相关资源
          最近更新 更多