Хотите удалить язык из URL, например перенаправить ab c .com \ en \ about на ab c .com \ about - PullRequest
0 голосов
/ 22 апреля 2020

Я хочу перенаправить ab c .com \ en \ about на ab c .com \ about.
Я попытался добавить правила в файл веб-конфигурации.

<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, но это также не сработало.

1 Ответ

0 голосов
/ 23 апреля 2020

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>

Результат.
enter image description here


enter image description here
Вот официальное объяснение модуля перезаписи.
https://docs.microsoft.com/en-us/iis/extensions/url-rewrite-module/url-rewrite-module-configuration-reference
Не стесняйтесь, дайте мне знать, если есть что-то, с чем я могу помочь.
...