gpt4 book ai didi

asp.net-mvc - 旧版 PHP 网址不会在 MVC 中调用自定义路由

转载 作者:行者123 更新时间:2023-12-01 02:27:59 25 4
gpt4 key购买 nike

我们最近用一个 ASP.NET MVC 网站替换了一个旧的 php 网站。为了防止搜索引擎中遗留 url 的 404 错误,我们通过 - http://www.mikesdotnetting.com/Article/108/Handling-Legacy-URLs-with-ASP.NET-MVC 设置了一个自定义的遗留路由系统。

该代码在我的本地机器上运行,并重定向到正确的路由;但是,实时服务器发出 404。额外的问题/线索,404 不是我们自定义的 404 页面,而是 iis 6 默认页面。

代码:

public class LegacyUrlRoute: RouteBase
{
// source: http://www.mikesdotnetting.com/Article/108/Handling-Legacy-URLs-with-ASP.NET-MVC
public override RouteData GetRouteData(HttpContextBase httpContext)
{
const string status = "301 Moved Permanently";
var request = httpContext.Request;
var response = httpContext.Response;
var legacyUrl = request.Url.ToString();
var newUrl = "";

if (legacyUrl.Contains(".php"))
{

newUrl = "/";
if (legacyUrl.Contains("support/mailfilter.php"))
newUrl = "/support/";
else if (legacyUrl.Contains("/support/default.php"))
newUrl = "/support/";
else if (legacyUrl.Contains("/business/default.php"))
newUrl = "/services/";
else if (legacyUrl.Contains("/residential/default.php"))
newUrl = "/services/";
else if (legacyUrl.Contains("/about/default.php"))
newUrl = "/home/about/";
else if (legacyUrl.Contains("/jobs.php"))
newUrl = "/jobs/";
else if (legacyUrl.Contains("/support/links.php"))
newUrl = "/support/";
else if (legacyUrl.Contains("/support/settings.php"))
newUrl = "/support/";
else if (legacyUrl.Contains("/default.php"))
newUrl = "/";


response.Status = status;
response.RedirectLocation = newUrl;
response.End();
}
return null;
}
public override VirtualPathData GetVirtualPath(RequestContext requestContext, RouteValueDictionary values)
{
return null;
}
}

注:

我们怀疑问题是 iis 无法提供 php 页面,但我似乎无法在 iis 中找到解决问题的设置。就好像请求从未命中 Controller 代码、错误或其他。所有其他页面/路由都运行良好。

最佳答案

找到了答案。

问题是因为如果扩展名为 .php,iis 永远不会启动 asp.net 服务。

解决方法是转到属性>主目录>配置,找到.php扩展名,将可执行路径更改为asp.net路径,并将其限制为“GET、HEAD、POST、DEBUG”或您喜欢的任何内容。我最初选择了“所有动词”单选按钮,但这不起作用。

虽然该页面没有明确给出我想出的答案,this page确实有帮助。

关于asp.net-mvc - 旧版 PHP 网址不会在 MVC 中调用自定义路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14903072/

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