У меня есть правило перезаписи в моем файле web.config, например:
<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'/>
, когда я отлаживаю, я вижу, что оно запускает правило, думая, что products равно {R: 2} и undefined равен {R: 1}, поэтому он пытается загрузить http://localhost/products/undefined/
, и я получаю сообщение об ошибке: The file '/public/undefined.aspx' does not exist.
Я бы хотел, чтобы правило не срабатывало, если первый сегмент URL является каталогомили файл. Кто-нибудь есть идея, как я могу сделать такую проверку?