使用rewriteModule从页面中删除.aspx?

如何解决使用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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?