Перезапись URL вызывает 404 - PullRequest
2 голосов
/ 27 ноября 2011

Я установил простое правило для перезаписи всех запросов к своему домену:

<rule name="Rewrite Test" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
    <match url="*" />
    <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
        <add input="{HTTP_HOST}" pattern="mydomain.com" />
    </conditions>
    <action type="Rewrite" url="http://mydomain.com/TestImage.jpg" appendQueryString="false" />
</rule>

С этим включенным я получаю ошибку 404 каждый раз, когда я получаю доступ к своему домену.Однако, если я изменил это на правило перенаправления, все работает нормально.Я что-то упускаю здесь?

Заранее спасибо.

1 Ответ

5 голосов
/ 27 ноября 2011

Как объясняет Дэниел, вы не можете переписать домен (если вы не настроили IIS в качестве обратного прокси-сервера с ARR). Вы можете переписать только другой URL-адрес на том же сайте, и таким образом он будет неявно переписан на тот же домен, на который был направлен исходный запрос.

Ваше правило переписывания должно быть:

<rule name="Rewrite Test" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
    <match url="*" />
    <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
        <add input="{HTTP_HOST}" pattern="mydomain.com" />
    </conditions>
    <action type="Rewrite" url="/TestImage.jpg" appendQueryString="false" />
</rule>

Если сайт не привязан к другим доменным именам, которые обслуживают другой контент, вы можете также отбросить условие правила и сделать его еще проще:

<rule name="Rewrite Test" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
    <match url="*" />
    <action type="Rewrite" url="/TestImage.jpg" appendQueryString="false" />
</rule>

Перенаправление отлично работает с вашим примером, поскольку вы можете (конечно) перенаправить клиента на URL-адрес в том же домене, но также и на URL-адрес в другом домене.

...