Я использую функцию 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?