Я написал внешний файл перенаправления для использования на сайте. Перенаправление работает отлично, но когда я добавляю правило 404, перенаправление прерывается. В этот момент 404 работает, но редирект не работает. Я также пытался сохранить правила перенаправления внутри файла web.config (а не в виде отдельного файла), но это тоже не работает.
Может кто-нибудь понять, как я могу заставить мои перенаправления и 404 правила работать в тандеме?
Ниже приведен код для перенаправления в файле web.config:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rewriteMaps configSource="rewritemaps.config" />
<rules>
<rule name="Redirect rule1 for Redirects">
<match url=".*" />
<conditions>
<add input="{Redirects:{REQUEST_URI}}" pattern="(.+)" />
</conditions>
<action type="Redirect" url="{C:1}" appendQueryString="false" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Внешний файл, указанный выше, выглядит следующим образом:
<rewriteMaps>
<rewriteMap name="Redirects">
<add key="/old_page.html" value="/new_page.html" />
</rewriteMap>
</rewriteMaps>
На данный момент все отлично работает. Однако, как только я добавлю следующее, 404 прекрасно работает, но перенаправление не работает.
<httpErrors>
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" prefixLanguageFilePath="" path="/page-not-found.html" responseMode="ExecuteURL" />
</httpErrors>
Общий код, который не работает, выглядит следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rewriteMaps configSource="rewritemaps.config" />
<rules>
<rule name="Redirect rule1 for Redirects">
<match url=".*" />
<conditions>
<add input="{Redirects:{REQUEST_URI}}" pattern="(.+)" />
</conditions>
<action type="Redirect" url="{C:1}" appendQueryString="false" />
</rule>
</rules>
</rewrite>
<httpErrors>
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" prefixLanguageFilePath="" path="/page-not-found.html" responseMode="ExecuteURL" />
</httpErrors>
</system.webServer>
</configuration>