Перенаправление URL-адресов, добавленных в закладки, через модуль перезаписи IIS не работает должным образом, несмотря на то, что шаблон URL совпадает при тестировании - PullRequest
0 голосов
/ 22 февраля 2019

Я прочитал очень много форумов и сделал, возможно, все, что мог.Мое исходящее правило работает с точки зрения переписывания URL для целей SEO, но мой Redict URL, который в случае, если измененные URL отмечены в закладках наших пользователей, не работает.Я использую IIS 10.0.

URL-адрес, который необходимо изменить:

http://agmodel.com/files/content/insights/publishing/e_clouds.pdf

Кому: http://agmodel.com/assets/content/insights/publishing/e_clouds.pdf

Таким образом, единственное, что я изменяю, это строка "files"в «активы».

Вот что я пробовал:

Попытка 1:

<rule name="Redirect" stopProcessing="true">
   <match url="(https?:\/\/[^\/]+)\/" />
   <conditions trackAllCaptures="true">
      <add input="{QUERY_STRING}" pattern="(https?:\/\/[^\/]+)\/files\/(.*)" />
      <add input="{REQUEST_URI}" pattern="^/assets" negate="true" />
   </conditions>
   <action type="Redirect" url="{R:1}/assets/{C:2}" appendQueryString="false" redirectType="Found" />
</rule>

Я пытался убедиться, что первый шаблон всегдаДомен второй шаблон это файлы.

Попытка 2:

<rule name="assets-to-files" stopProcessing="true">
   <match url="(https?:\/\/[^\/]+)\/files\/(.*)" />
   <action type="Redirect" url="{R:1}/assets/{C:1}" appendQueryString="false" logRewrittenUrl="true" />
   <conditions>
      <add input="{QUERY_STRING}" pattern="\/files\/(.*)" />
   </conditions>
</rule>

Поэтому всякий раз, когда я проверяю, изменится ли старый URL, добавленный в закладки, на новый, он не работает.Во время тестирования сопоставления с образцом в IIS 10 он получает зеленый свет.

Что я здесь не так делаю?

1 Ответ

0 голосов
/ 26 февраля 2019

Здесь вы можете использовать очень простое правило:

<rule name="assets-to-files">
  <match url="^files/(.*)" />
  <action type="Rewrite" url="assets/{R:1}" />
</rule>

URL, который вы хотите сопоставить: http://agmodel.com/files/content/insights/publishing/e_clouds.pdf.Атрибут url в узле match получит files/content/insights/publishing/e_clouds.pdf в качестве входных данных, поэтому вы хотите

 ^files/(.*)

Он будет соответствовать files/ в начале строки и затем будет записан в {R:1}любые 0 или более символов кроме новой строки.

В атрибуте action node url все, что вам нужно, это указать новый путь assets/ и добавить то, что вы записали в {R:1}.

...