Как заблокировать прямой доступ к страницам .aspx с помощью модуля URLRewrite в IIS7? - PullRequest
1 голос
/ 31 марта 2011

Я использую функцию URLRewrite в IIS7, чтобы скрыть расширение .aspx в URL-адресах моего приложения ASP.NET WebForms.

Я использую следующую конфигурацию:

<rule name="WebFormsToMVC" stopProcessing="true">  
  <match url="^(.*?)\.aspx\?*?.*$" />  
    <conditions>  
      <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />  
      <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />  
    </conditions>  
  <action type="Rewrite" url="{R:1}" />  
</rule>`

Теперь я могу просмотреть:

http://www.mytest.com/contact

, и это переписано в:

http://www.mytest.com/contact.aspx

Это сохраняет "симпатичный" URL в адресной строке браузера.Я также обновил все свои ссылки на сайте, чтобы использовать URL-адреса без расширений.

Проблема заключается в том, что к базовым .aspx страницам по-прежнему можно получить прямой доступ, и я хотел бы предотвратить это.

Если пользователь переходит на http://www.mytest.com/contact.aspx, я бы хотел, чтобы он либо перенаправил / переписал на http://www.mytest.com/contact, либо, по крайней мере, просто возвратил "Страница не найдена".

Обновление:

Мне удалось добиться этого, перенаправив все .aspx страницы в домашний каталог.Это не идеально, так как я бы предпочел отправить их в версию, отличную от .aspx, но пока это подойдет.

<rule name="Block .aspx" stopProcessing="true">  
    <match url=".aspx" />  
    <action type="Redirect" url="/" />  
</rule>`

Как переписать и перенаправить URL-адреса, которые напрямую адресуют .aspx страниц, в мой удобный формат URL?

Ответы [ 2 ]

0 голосов
/ 01 апреля 2011

Следующее правило удалит .aspx из URL, а затем перенаправит браузер на URL без расширения:

<rule name="Redirect to friendly" stopProcessing="true">
    <match url="^(.*)\.aspx$" />
    <action type="Redirect" url="{R:1}" />
</rule>

Проблема, которую я мог бы предвидеть с этим подходом (и с другим вашим правилом), если у вас есть страница с именем contact.aspx и папка с именем /contact. Это может привести к неожиданным проблемам.

0 голосов
/ 31 марта 2011
...