在网络中重写网址.配置 c#
本文关键字:配置 重写 网络 | 更新日期: 2023-09-27 18:34:19
我想重写一个网址以匹配页面文件名的确切名称。我的意思是:我有一个 http://example.com/PagePage.aspx,在浏览器栏上输入 http://example.com/pagepage.aspx 我想再次获得 http://example.com/PagePage.aspx。
当然,键入任何字符组合也是如此,即PagePage.aspx,pagePage.aspx等等......
我尝试了这种方式:
<system.webServer>
<rewrite>
<rules>
<rule name="SpecificRewrite" stopProcessing="true">
<match url="^pagepage$" />
<match url="^Pagepage$" />
<match url="^pagePage$" />
<action type="Rewrite" url="PagePage.aspx" />
</rule>
</rules>
</rewrite>
</system.webServer>
但我得到"500 - 内部服务器错误"。
所以我也用这种方式尝试:
<system.webServer>
<rewrite>
<rules>
<rule name="SpecificRewrite" stopProcessing="true">
<match url="^pagepage'/?$" />
<match url="^Pagepage'/?$" />
<match url="^pagePage'/?$" />
<action type="Redirect" url="/PagePage.aspx" />
</rule>
</rules>
</rewrite>
</system.webServer>
但我得到一个无限循环
我试图使用Global.asax获得相同的结果
protected void Application_BeginRequest(object sender, EventArgs e)
{
HttpContext context = HttpContext.Current;
string path = context.Request.Path;
if (path.Equals("/pagepage.aspx"))
{
context.RewritePath(path.Replace("pagepage.aspx", "PagePage.aspx"));
// or context.RewritePath("PagePage.aspx"); is the same
}
}
但是,再次...我得到一个无限循环错误...
我用谷歌搜索了这个问题,但是...我发现的方法或多或少与我已经尝试过的方法相同。我错在哪里?
有什么建议吗?提前谢谢你
首先,一个规则不能有多个匹配元素。这可能就是您收到 500 错误的原因。其次,我认为你实际上是指重定向操作而不是重写。因此,以下内容将检查以pagepage结尾的请求.aspx无论字母大小写如何,条件将检查url是否以PagePage结尾.aspx因此它不会无限循环。在这里:
<rule name="SpecificRewrite" stopProcessing="true">
<match url="^pagepage.aspx$" />
<conditions>
<add input="{REQUEST_URI}" pattern="PagePage.aspx" ignoreCase="false" negate="true" />
</conditions>
<action type="Redirect" url="PagePage.aspx" />
</rule>