Как мне удалить index.aspx из URL, используя web.config?

Как можно перенаправить с www.example.com/section/index.aspx на www.example.com/section, используя правила перезаписи в web.config? Это также должно работать на различных уровнях, таких как www.example.com/parent/child

* Отметив, что у меня нет доступа к серверу. Я могу просто отредактировать файл web.config и указать серверу пересобрать приложение.

2 ответа

Лучше всего использовать модуль перезаписи URL IIS7, но вам необходимо установить его на сервере. Это довольно простой в использовании и мощный одновременно. Возможно, он уже установлен, если вы размещены на нем, потому что, хотя он не установлен по умолчанию, он от Microsoft и довольно часто используется.

Если вы используете версию 2.0 или выше asp.net, вы можете добавить urlMappings раздел web.config:

<system.web>
    <urlMappings enabled="true">
        <add url="~/Section" mappedUrl="~/Section/index.aspx"/>
    </arlMappings>
</system.web>

Но у этого есть некоторые проблемы: во-первых, если запрошенный URL-адрес не обрабатывается модулем ASP.Net или не доставляется в ваше приложение, перезапись никогда не происходит. Это может произойти, например, потому что вы не используете файл ".aspx". Кроме того, в некоторых конфигурациях запрашиваемый файл должен существовать. Другая проблема заключается в том, что не поддерживаются подстановочные правила, поэтому вам придется добавить правила, чтобы переписать все возможные пути по отдельности.

И, наконец, есть asp.net, переписывающий http-модули, которые вы можете поместить в каталог bin и добавить в ваш web.config. Вот некоторые (возможно, устаревшие) варианты ScottGu для перезаписи URL.

Возможно, это отвратительно, но, создав правила для каждого возможного уровня, я смог переписать все пути, удаляя index.aspx из URL.

начиная с

<rule name="Migrate to PHP">
 <match url="^([_0-9a-z-]+).aspx"/>
 <action type="Redirect" redirectType="Permanent" url="/"/>
</rule>

и заканчивая

<rule name="Migrate to PHP all the way">
 <match url="^([_0-9a-z-]+)/([_0-9a-z-]+)/([_0-9a-z-]+)/([_0-9a-z-]+)/([_0-9a-z-]+).aspx"/>
 <action type="Redirect" redirectType="Permanent" url="{R:1}/{R:2}/{R:3}/{R:4}"/>
</rule>
Другие вопросы по тегам