【问题标题】:Want to remove language from URL, such as redirect abc.com\en\about to abc.com\about想要从 URL 中删除语言,例如将 abc.com\en\about 重定向到 abc.com\about
【发布时间】:2020-04-22 04:14:42
【问题描述】:

我想将 abc.com\en\about 重定向到 abc.com\about。
我已尝试将规则添加到 Web 配置文件。

<rules>
  <rule name="Redirect" stopProcessing="true">
    <match url="(.*)/en/(.*)" ignoreCase="true"/>
    <action type="Redirect" url="{R:1}/{R:2}" redirectType="Permanent"/>
  </rule>
</rules>

还加了重写规则,还是不行。

<rules>
  <rule name="RedirectEnglish" stopProcessing="true">
    <match url=".*/en/.*" ignoreCase="true"/>
    <action type="Rewrite" url="{R:1}/{R:2}" appendQueryString="false" />
  </rule>
</rules>

我还能做些什么来在我的网站上进行上述更改?
我添加了 IIS 规则,但也没有用。

【问题讨论】:

  • 为什么不将您的应用程序配置为不生成此类 URL?
  • 已经使用 进行配置,但是如果用户可能会点击他们需要重定向到工作 url 的 url

标签: redirect iis url-rewriting web-config sitecore-mvc


【解决方案1】:

Rule Pattern 获取 URL 的路径字符串,不包括服务器的主机名。因此,入站 URL 将与规则不匹配,不会执行规则操作。
这是我的例子。

  <rewrite>
      <rules>
        <rule name="Redirect" enabled="true" stopProcessing="true">
          <match url="^en/(.*)" />
          <action type="Redirect" url="{R:1}" />
                    <conditions logicalGrouping="MatchAny">
                    </conditions>
        </rule>
      </rules>

或者,

<rewrite>
      <rules>
        <rule name="Reverse Proxy" enabled="true" stopProcessing="true">
          <match url="^en/(.*)" />
          <action type="Rewrite" url="{R:1}" />
                    <conditions logicalGrouping="MatchAny">
                    </conditions>
        </rule>
      </rules>

结果。



这是Rewrite模块的官方解释。
https://docs.microsoft.com/en-us/iis/extensions/url-rewrite-module/url-rewrite-module-configuration-reference
如果有什么我可以帮忙的,请随时告诉我。

【讨论】:

    猜你喜欢
    • 2016-07-02
    • 1970-01-01
    • 1970-01-01
    • 2017-02-22
    • 2017-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多