IIS 7 нет изображений, когда включен дружественный URL-адрес

Я использую два простых правила для реализации дружественного URL.

Они работают, но я не вижу изображения и возникает ошибка

Прямой URL-адрес веб-сайта ASP.NET 3.5

http://localhost/Test/Products/888/9999

Ошибка

http://localhost/Test/Products/888/Images/Jellyfish.jpg Не удалось загрузить ресурс: сервер ответил со статусом 404 (не найдено)

Правила

  <rule name="t2" enabled="true">
                    <match url="^products/([0-9]+)/([0-9]+)" negate="false" />
                    <conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
                    <action type="Rewrite" url="products.aspx?p={R:1}&amp;pc={R:2}" />
                </rule>
                <rule name="t1" enabled="true">
                    <match url="^product/([0-9]+)" />
                    <conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
                    <action type="Rewrite" url="product.aspx?p={R:1}" />
                </rule>

Я вижу, что IIS строит неправильный путь к изображениям, как он говорит

http://localhost/Test/Products/888/Images/Jellyfish.jpg

Любая подсказка?


person DmitryBoyko    schedule 11.06.2015    source источник
comment
Я не совсем понимаю. Исключаете ли вы URL-адрес http://localhost/Test/Products/888/9999, чтобы вернуть изображение в местоположении http://localhost/Test/Products/888/Images/Jellyfish.jpg, или ваш product.aspx возвращает изображение. Каков реальный URL-адрес изображения, которое вы хотите получить?   -  person Peter Hahndorf    schedule 11.06.2015
comment
@PeterHahndorf URL-адрес http://localhost/Test/Products/888/9999 должен открыть Products.aspx. Но каким-то образом IIS переписывает пути к изображениям внутри этой страницы. На этой странице есть простой файл ` ‹img src=Images/Jellyfish.jpg /›`, который отлично работает без правил перезаписи.   -  person DmitryBoyko    schedule 11.06.2015
comment
поэтому src изображения относится к странице, браузер запросит что-то вроде `localhost/Test/Products/888/9999/images/jellyfish.jpg», который определяется вашими правилами перезаписи. В инструментах браузера F12 проверьте фактически запрошенный URL-адрес изображения. Вы должны исключить изображения из своего правила или использовать не относительный путь.   -  person Peter Hahndorf    schedule 11.06.2015
comment
@PeterHahndorf Как мне это сделать?   -  person DmitryBoyko    schedule 11.06.2015
comment
Вы можете добавить к своим правилам такое условие, как <conditions><add input="{REQUEST_URI}" pattern="\.jpg" negate="true" /></conditions> или, может быть, <conditions><add input="{REQUEST_URI}" matchType="IsFile" negate="true" /></conditions> Вы должны убедиться, что ваши изображения не соответствуют правилам.   -  person Peter Hahndorf    schedule 11.06.2015


Ответы (1)