【问题标题】:Url rewrite in web.config http to https AND non-www to www AND no trailing slash将 web.config 中的 URL 重写为 http 到 https 和非 www 到 www 并且没有尾部斜杠
【发布时间】:2018-07-03 14:09:11
【问题描述】:

Web.config URL 重写让我头疼 :-) 我正在尝试按照以下条件设置重写规则:

  1. 它应该只产生一个重定向
  2. 忽略资源
  3. 删除 default.aspx
  4. 删除尾部斜杠
  5. 不使用自定义文件扩展名时小写(不是查询字符串)
  6. 强制 www
  7. 强制 https

所有这一切都很好,除非原始网址中已经包含 WWW。如果 url 有 WWW,那么它将遵循所有规则,但不会重定向到 HTTPS。

任何帮助将不胜感激!

这是我目前所拥有的 (inspired by this great article):

  <rules>


    <rule name="WhiteList - resources" stopProcessing="true">
      <match url="^resources/" />
      <conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
      <action type="None" />
    </rule>

    <rule name="SEO - remove default.aspx" stopProcessing="false">
      <match url="(.*?)/?default\.aspx$" />
      <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
        <add input="{HTTP_METHOD}" pattern="GET" />
      </conditions>
      <action type="Rewrite" url="_{R:1}" />
    </rule>

    <rule name="SEO - Remove trailing slash" stopProcessing="false">
      <match url="(.+)/$" />
      <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
        <add input="{HTTP_METHOD}" pattern="GET" />
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
      </conditions>
      <action type="Rewrite" url="_{R:1}" />
    </rule>

    <rule name="SEO - ToLower" stopProcessing="false">
      <match url="(.*)" ignoreCase="false" />
      <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
        <add input="{REQUEST_URI}" pattern="\.pngx|\.jpgx|\.gifx|\.bmpx|\.orcx" negate="true" />
        <add input="{HTTP_METHOD}" pattern="GET" />
        <add input="{R:1}" pattern="[A-Z]" ignoreCase="false" />
      </conditions>
      <action type="Rewrite" url="_{ToLower:{R:1}}" />
    </rule>

    <rule name="ADD WWW IF NOT PRESENT" stopProcessing="true">
      <match url="^(_*)(.*)" />
      <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
        <add input="{HTTP_HOST}" pattern="^www\.testssl\.orca-bree\.be$" negate="true" />
        <add input="{HTTP_METHOD}" pattern="GET" />
      </conditions>
      <action type="Redirect" url="https://www.testssl.orca-bree.be/{R:2}" redirectType="Permanent" />
    </rule>

    <rule name="redirect" stopProcessing="true">
      <match url="^(_+)(.*)" />
      <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
        <add input="{HTTP_METHOD}" pattern="GET" />
      </conditions>
      <action type="Redirect" url="{R:2}" redirectType="Permanent" />
    </rule>

  </rules>

【问题讨论】:

    标签: ssl url-rewriting web-config


    【解决方案1】:

    我没有测试它,但它应该可以工作:

    <rule name="Redirect to www" patternSyntax="ECMAScript" stopProcessing="true">
      <match url=".*"></match>
      <conditions logicalGrouping="MatchAny">
        <add input="{HTTP_HOST}" pattern="^mydomain.be$"></add>
        <add input="{HTTPS}" pattern="off"></add>
      </conditions>
      <action type="Redirect" url="https://www.mydomain.be/{R:0}" redirectType="Permanent" appendQueryString="true"></action>
    </rule>
    <rule name="Remove trailing slash" stopProcessing="true">
      <match url="(.*)/$" />
      <conditions>
        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
      </conditions>
      <action type="Redirect" redirectType="Permanent" url="https://www.mydomain.be/{R:1}" />
    </rule>
    

    我改变了什么:

    • 您的规则的操作。现在它们包含带有wwwhttps 的完整域名
    • 在第一条规则的条件中添加了MatchAny

    【讨论】:

    • 感谢您的回答。我已经尝试过了,但是在使用 http://www 时仍然出现错误。我的域名。是。 (没有 ssl,www)没有 www 它工作得很好。
    • 你能不能尝试用` ` 替换&lt;add input="{HTTPS}" pattern="off"&gt;&lt;/add&gt;` 有时取决于网络基础设施{HTTPS} 条件可能不工作
    • 感谢您的帮助,但我已经更新了原始问题以符合我的所有要求。一直在尝试更多,但真的卡在了这个上。
    猜你喜欢
    • 2017-12-04
    • 2014-12-16
    • 1970-01-01
    • 2021-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-18
    相关资源
    最近更新 更多