gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 13:52:52 25 4
gpt4 key购买 nike

我正在使用 ASP .NET rewriteModule 重写 http://example.comhttp://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/Register/

我怎样才能做到这一点?

我正在使用 IIS7 在 GoDaddy 上进行共享虚拟主机。

最佳答案

这些是我开始每个项目的标准重写规则。我只对所有页面使用干净的 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 更改为小写。请参阅下面为什么要这样做。

更新表单操作也是一个好主意,这样回帖就不会返回到丑陋的 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 小写是个好主意。在 URL 中混合小写/大写字符会给 SEO/Google 带来重复的内容问题。例如 website.com/About 和 website.com/about 将加载相同的页面,但 Google 会将它们索引为两个单独的页面。

关于.net - 使用 rewriteModule 从页面中删除 .aspx?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6097592/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com