我在 IIS 8 上的 ASP.NET (4) 中有一个新站点。
我需要将旧站点中的旧 php 链接(具有查询字符串)重定向到新页面(现在具有友好的 URL)。PHP 页面对于许多重定向都是相同的,只是查询字符串发生了变化(例如 id=6)。
例如 site.com/page.php?id=6 > site.com/an-article site.com/page.php?id=7 > site.com/another-article
这样做的最简单/最快的方法是什么?
管理数据库中的旧链接和新链接。将 OldLink、NewLink 存储在数据库中。并在 App_start 中加载缓存中的所有列表,以便所有后续请求访问。
您需要为此进行 URL 重写。
您将需要在 global.asax 中工作
在 application_beginrequest 方法中编写你的 url 重写逻辑
例如
string aspxurl = string.Empty;
string querystring = string.Empty;
string[] strTmpQuery = System.Web.HttpContext.Current.Request.RawUrl.Split('?');
if(strTmpQuery[0].Endswith(".php"))
{
aspxurl = strTmpQuery[0].Substring(0,strTmpQuery[0].Length-4) + ".aspx";
}
if(strTmpQuery.Length>1 && strTmpQuery[1].Trim() != "")
{
querystring = strTmpQuery[1];
}
System.Web.HttpContext.Current.RewritePath(aspxurl, "", querystring);
注意:您必须调整 web.config,以便 IIS 将 PHP 文件请求发送到 .net 引擎。寻找 HttpModule/HttpHandler 进行 url 重写
您将要构建新的 .net 链接并使用该链接向用户发送 HTTP 301:
header('HTTP/1.1 301 Moved Permanently');
header('Location: ' . $url);
die();
“url”变量是您网站的新翻译 url。