ASP.NET перенаправляет все запросы на одну страницу и переписывает URL, чтобы страница находилась в корневом каталоге. - PullRequest
0 голосов
/ 01 февраля 2019

У меня есть сайт, на котором клиенту нужна только одна страница в подкаталоге.Любые запросы на другие страницы должны быть перенаправлены на указанную страницу.Клиент также хотел бы, чтобы URL всегда был корневым доменом.

Итак ...

http://some -domain.com / 2019 / 2019.html -> http://some -domain.com

У меня работает перенаправление, но перезапись - нет.У кого-нибудь есть предложения?

<rewrite>
  <rules>
    <rule name="redirect all requests" stopProcessing="true">
      <match url="^(.*)$" ignoreCase="false" />
      <conditions logicalGrouping="MatchAll">
        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" pattern="" ignoreCase="false" />
      </conditions>
      <action type="Redirect" url="2019/2019.html" appendQueryString="true" />
    </rule>
    <rule name="Rewrite to web root" stopProcessing="true">
      <match url="^(.*)" ignoreCase="true" />
      <action type="Rewrite" url="/" />
    </rule>
  </rules>

1 Ответ

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

Действие «Перезаписать» использует указанный URL-адрес для генерации ответа, который в результате будет отправлен браузеру, поэтому, когда вы используете «Перезаписать», браузер не будет знать, что ответ основан на другом адресе, и поэтому адресвидимым для пользователя будет по-прежнему "/2019/2019.html".

«Redirect» фактически возвращает браузеру ответ о перенаправлении, поэтому другой запрос от браузера будет отправлен на сервер с использованием нового URL-адреса (в вашем случае «/»).Решение "Redirect" - это правильный путь для вашего случая.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...