У меня есть правила перезаписи в моем файле web.config, как это:Проверьте первый сегмент URL не файла или каталога
<rule name="Public page" stopProcessing="true">
<match url="^([^/]+)/([^/]+)/?$" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
<add input="{URL}" pattern="\.(.*)$" negate="true" />
</conditions>
<action type="Rewrite" url="public/place/{R:2}.aspx?cname={R:1}" />
</rule>
Что она делает это позволить тип клиента в динамическом топонима, а затем страницу, которую он хочет видеть. например, у меня есть страница, которая отображает новости для компаний. Я хочу посмотреть новости для компании под названием «Павильон», так что я типа:
http://localhost/pavilion/news/
и переписывание URL берет меня
http://localhost/public/news.aspx?cname=pavilion
Это работает. Но я получаю много ошибок о странице, которая не найдена для такого случая: атрибут src изображения, который указывает на какое-то не существующее имя с другой страницы. например, в странице продуктов (Http: //localhost/products/showproducts.aspx) У меня есть:
<img src='undefined'/>
, когда я отладки я вижу, что это срабатывает правило, полагая, что продукты является {R: 2} и неопределенный является {R: 1} поэтому он пытается загрузить http://localhost/products/undefined/
и я получаю ошибку: The file '/public/undefined.aspx' does not exist.
Я хотел бы правил не стрелять, если первый сегмент URL является каталог или файл. Есть ли у кого-нибудь идеи, как я могу сделать такую проверку?