Надеюсь, все это имеет смысл:
У меня есть проект веб-приложения для сервера IIS7, который поддерживает различные темы и использует разные главные страницы.
В результате того, что я пытаюсь сделать, в корне проекта нет aspx-файлов, поэтому я использую возможность web.config переписать «~ / default.aspx» на «~ / themes / a / default.aspx. "
это отлично работает, пока я набираю "http://www.mysite.com/default.aspx", но набираю просто"http://www.mysite.com"приводит к ошибке" 403 - Запрещено: доступ запрещен "
Я надеялся, что комбинация urlMapping и документа по умолчанию будет достаточно умной, чтобы справиться с этим, но это не так.
<system.webServer>
<defaultDocument enabled="true">
<files>
<clear />
<add value="default.aspx"/>
</files>
</defaultDocument>
</system.webServer>
я тоже пробовал
<system.webServer>
<defaultDocument enabled="true">
<files>
<clear />
<add value="~/themes/a/default.aspx"/>
</files>
</defaultDocument>
</system.webServer>
но безрезультатно
Я надеялся, что браузер войдет без определенного документа, IIS7 предположит, что это default.aspx, а затем urlMapping сопоставит его соответствующим образом, но нет
какие-нибудь указатели? Я прочитал здесь массу сообщений с похожими проблемами, но не о самой проблеме
Вы можете справиться с обоими сценариями http://www.mysite.com/ и http://www.mysite.com/default.aspx с одним правилом перезаписи URL.
<rule name="Rewrite to theme folder">
<match url=".*" />
<conditions logicalGrouping="MatchAny">
<add input="{URL}" pattern="^/default\.aspx$" />
<add input="{URL}" pattern="^/$" />
</conditions>
<action type="Rewrite" url="/themes/a/default.aspx" logRewrittenUrl="true" />
</rule>
В качестве документа по умолчанию можно указать только имя файла. Вы не можете указать папку. IIS, вероятно, проигнорирует вашу запись, так как не сможет открыть ее как файл. Ошибка 403 возникает из-за того, что, вероятно, не указан (или найден) другой документ по умолчанию, а просмотр каталогов отключен (по умолчанию).