我正在使用IIS7的URLRewrite功能隐藏ASP.NET WebForms应用程序URL中的.aspx
扩展名。
我正在使用以下配置:
<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
这会保留浏览器地址栏中的“漂亮”网址。我还更新了网站上的所有链接,以使用无扩展名的网址。
问题是仍然可以直接访问基础.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>`
如何重写直接将.aspx
页面定位的网址并将其重定向到我的友好网址格式?
答案 0 :(得分:0)
答案 1 :(得分:0)
以下规则会从网址中删除.aspx
,然后将浏览器重定向到无扩展名网址:
<rule name="Redirect to friendly" stopProcessing="true">
<match url="^(.*)\.aspx$" />
<action type="Redirect" url="{R:1}" />
</rule>
如果您有一个名为contact.aspx
的页面和一个名为/contact
的文件夹,我会用这种方法(以及您的其他规则)预见的问题。这可能会产生一些意想不到的问题。