【发布时间】:2023-03-10 06:48:01
【问题描述】:
我们正在用 .NET 3.5 解决方案替换旧的经典 asp 网站。
我们需要将所有经典的 ASP 请求重定向到 aspx 页面(即 contactus.asp,现在可能会路由到 /contact-us/default.aspx)。我想要的是请求到达 global.asax,这样我就可以做类似的事情
If url == "bob.asp"
Response.Status = "301 Moved Permanently";
Response.AddHeader("Location", SiteConfig.SiteURL + redirectUrl);
End If
有两种不优雅的解决方案。
A) 放置一个 global.asa 文件并通过该文件进行路由。
B) 将 asp 文件映射到 .NET 引擎。很好,但是如果我们需要在我们的站点上托管经典的 asp 站点,IIS 会将请求发送到错误的位置。
我在这里找到了一个不错的解决方案
http://forums.asp.net/p/1202225/3458901.aspx
这表明这样的事情可能有效......
<buildProviders>
<add extension=".php" type="System.Web.Compilation.PageBuildProvider" />
</buildProviders>
<httpHandlers>
<add verb="*" path="*.php" type="System.Web.UI.PageHandlerFactory" validate="True" />
</httpHandlers>
此示例适用于 php,但我认为同样适用于 asp。但是,在示例中将 .php 更改为 .asp 并将标签放置在 web.config 的正确部分之后,我没有任何乐趣(实际上是 500 服务器错误)。
任何人都可以对此有所了解或给我一个优雅的解决方案。
感觉上述解决方案不适用于 php 或 asp,因为 IIS 将在请求到达 .NET 引擎之前对其进行路由。
提前致谢
史蒂夫
【问题讨论】:
-
您使用的是什么版本的 IIS?
标签: asp.net asp-classic routing seo