2010-11-22 3 views
1

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

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

+2

Можете ли вы подтвердить, какая версия IIS вы используете, и что если URL Rewrite модули вы установили? Например, вы используете модуль перезаписи URL-адресов IIS 7? – 2010-11-22 15:51:27

ответ

4

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

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

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

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

И, наконец, есть asp.net rewrite httpmodules, которые вы можете удалить в каталоге bin и добавить в свой web.config. Вот некоторые (возможно устаревшие) варианты от ScottGu для url rewriting.

0

Это, вероятно, массово отвратительно, но, создав правила для каждого возможного уровня, я смог переписать все пути, отбрасывающие 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> 
Смежные вопросы