如何解决使用rewriteModule从页面中删除.aspx?
| 我正在使用ASP .NET rewriteModule将http://example.com重写为http://www.example.com。<section name=\"rewriteModule\" type=\"RewriteModule.RewriteModuleSectionHandler,RewriteModule\"/>
然后我把它放在<system.webServer>
里面。
<rewrite>
<rules>
<rule name=\"Canonical\" stopProcessing=\"true\">
<match url=\".*\"/>
<conditions>
<add input=\"{HTTP_HOST}\" pattern=\"^([a-z]+[.]com)$\"/>
</conditions>
<action type=\"Redirect\" url=\"http://www.{C:0}/{R:0}\" redirectType=\"Permanent\"/>
</rule>
</rules>
</rewrite>
现在,我想删除页面末尾的所有.aspx。例:
http://www.example.com/Register.aspx
将变成:
http://www.example.com/注册/
我怎样才能做到这一点?
我正在使用IIS7在GoDaddy上共享Web托管上。
解决方法
这些是我开始每个项目的标准重写规则。我仅对所有页面使用干净的URL(示例第一条规则适用于www.example.com/about,第二条规则www.example.com/product/123)
<rewrite>
<rules>
<rule name=\"Rewrite default to aspx\" stopProcessing=\"true\">
<match url=\"^$\" ignoreCase=\"false\" />
<action type=\"Rewrite\" url=\"default.aspx\" />
</rule>
<rule name=\"Rewrite page to aspx\" stopProcessing=\"true\">
<match url=\"^([a-z0-9/]+)$\" ignoreCase=\"false\" />
<action type=\"Rewrite\" url=\"{R:1}.aspx\" />
</rule>
</rules>
</rewrite>
我需要解析ID(仅此案例号)并将其添加到查询字符串的页面,我在前面添加了类似的规则:
<rule name=\"Rewrite Product ID\" stopProcessing=\"true\">
<match url=\"^product/([0-9]+)$\" ignoreCase=\"false\"/>
<action type=\"Rewrite\" url=\"product.aspx?id={R:1}\"/>
</rule>
如果要在URL中使用大小写字母,请设置ignoreCase = \“ true \”
编辑以回答您的第二个问题,外加奖金
此规则会将aspx页面重定向到干净的URL:
<rule name=\"Redirect to clean URL\" stopProcessing=\"true\">
<match url=\"^([a-z0-9/]+).aspx$\" ignoreCase=\"true\"/>
<action type=\"Redirect\" url=\"{R:1}\"/>
</rule>
将url = \“ {R:1} \”替换为url = \“ {ToLower:{R:1}} \”以将URL更改为小写。参见下文,为什么要这样做。
更新Form动作也是一个好主意,这样回发不会返回到丑陋的URL。使用IIS 7.5或更高版本,应该可以:
if (!String.IsNullOrEmpty(Request.RawUrl))
form1.Action = Request.RawUrl;
或对于IIS 7:
if (!String.IsNullOrEmpty(Context.Request.ServerVariables[\"HTTP_X_ORIGINAL_URL\"]))
form1.Action = Context.Request.ServerVariables[\"HTTP_X_ORIGINAL_URL\"];
需要记住的另一件事...保持所有URL的小写是一个好主意。网址中混用大小写字符会导致SEO / Google出现重复的内容问题。例如,website.com/About和website.com/about会加载同一页面,但是Google会将它们索引为两个单独的页面。
,首先,您需要删除.aspx(default.aspx)并重定向到默认值以更改浏览器地址,然后添加.aspx并使用IIS重新布线到页面
<rewrite>
<rules>
<clear />
<rule name=\"Redirect to clean URL\" enabled=\"true\" stopProcessing=\"true\">
<match url=\"^([a-z0-9/]+).aspx$\" ignoreCase=\"true\" />
<conditions logicalGrouping=\"MatchAll\" trackAllCaptures=\"false\" />
<action type=\"Redirect\" url=\"{R:1}\" />
</rule>
<rule name=\"RewriteASPX\" enabled=\"true\">
<match url=\"(.*)\" />
<conditions logicalGrouping=\"MatchAll\" trackAllCaptures=\"false\">
<add input=\"{REQUEST_FILENAME}\" matchType=\"IsFile\" negate=\"true\" />
<add input=\"{REQUEST_FILENAME}\" matchType=\"IsDirectory\" negate=\"true\" />
</conditions>
<action type=\"Rewrite\" url=\"{R:1}.aspx\" />
</rule>
</rules>
</rewrite>
,<rewrite>
<rules>
<remove name=\"RewriteUserFriendlyURL1\" />
<remove name=\"RedirectUserFriendlyURL1\" />
<rule name=\"RedirectUserFriendlyURL2\" stopProcessing=\"true\">
<match url=\"^www\\.myserver\\.com/(.*)\\.aspx$\" />
<conditions>
<add input=\"{REQUEST_METHOD}\" pattern=\"^POST$\" negate=\"true\" />
</conditions>
<action type=\"Redirect\" url=\"www.myserver.com/{R:1}\" appendQueryString=\"false\" />
</rule>
<rule name=\"RewriteUserFriendlyURL2\" stopProcessing=\"true\">
<match url=\"^www\\.myserver\\.com/(.*)$\" />
<conditions>
<add input=\"{REQUEST_FILENAME}\" matchType=\"IsFile\" negate=\"true\" />
<add input=\"{REQUEST_FILENAME}\" matchType=\"IsDirectory\" negate=\"true\" />
</conditions>
<action type=\"Rewrite\" url=\"www.myserver.com/{R:1}.aspx\" />
</rule>
</rules>
<outboundRules>
<remove name=\"OutboundRewriteUserFriendlyURL1\" />
<rule name=\"OutboundRewriteUserFriendlyURL2\" preCondition=\"ResponseIsHtml1\">
<match filterByTags=\"A,Form,Img\" pattern=\"^(.*)www\\.myserver\\.com/(.*)\\.aspx$\" />
<action type=\"Rewrite\" value=\"www.myserver.com/{R:1}\" />
</rule>
</outboundRules>
</rewrite>
这样做-我已经在本地计算机上针对IIS生成了此文件-将myserver.com更改为您自己的URL。您可以更改正则表达式以实际处理网址的x.aspx部分,然后它应可在所有页面上使用
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。