Как я могу удалить index.aspx из URL, используя web.config? - PullRequest
2 голосов
/ 22 ноября 2010

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

.

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

Ответы [ 2 ]

4 голосов
/ 22 ноября 2010

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

Если вы используете asp.net 2.0 или выше, вы можете добавить раздел 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 .

0 голосов
/ 22 ноября 2010

Возможно, это отвратительно, но, создав правила для каждого возможного уровня, я смог переписать все пути, удалив 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>
...