Использование IIS для перенаправления URL-адресов в опубликованном проекте - PullRequest
0 голосов
/ 21 февраля 2019

У меня есть приложение ASP.net MVP, которое я создаю в Visual Studio.

Опубликованный домен проекта будет выглядеть примерно так: http://example.com/ProjectName

У меня есть тонна URL-адресов, которые яЯ использую при локальном запуске проекта, которые выглядят примерно так:

<a href="/foo/bar">Test</a>

Они работают хорошо локально, но когда я публикую проект, они ломаются.Например, это то, к чему он будет перенаправлен в моей опубликованной версии:

http://example.com/foo/bar

Когда я хочу, чтобы это было:

http://example.com/ProjectName/foo/bar

Можно ли это исправить с помощью IIS и модуля перезаписи?Моя попытка ниже.

<rewrite>
  <rules>
    <rule name="Index Rule" stopProcessing="true">
      <match url="./ProjectName/*" />
      <action type="Rewrite" url="/" />
    </rule>
  </rules>
</rewrite>

Ответы [ 2 ]

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

Пожалуйста, попробуйте это:

<rule name="Index Rule" enabled="true" stopProcessing="true">
 <match url="^ProjectName/" negate="true" />
 <conditions>
  <add input="{HTTP_URL}" pattern="(.*)" ignoreCase="false" />
 </conditions>
 <action type="Rewrite" url="/ProjectName{C:0}" logRewrittenUrl="true" />
</rule>

Обратите внимание на атрибут negate = "true".Таким образом, это правило будет активным только для ресурсов типа "/ foo / bar", а не для "/ ProjectName / *"

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

Если вы используете бритву, измените ваши URL-адреса на "~/foo/bar".Если ваши URL-адреса генерируются в js, вы можете смешать два:

<script>
  var url = '@Url.Content("~/api/test")';

  or

  var url = '@Url.Action(...)';
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...