ASP.NET實(shí)現(xiàn)301重定向方法
<span style="font-family:'宋體';font-size:10.5pt;"></span>
關(guān)于百度等搜索引擎對(duì)于是否帶"www"前綴的域名的識(shí)別問題:即搜索引擎會(huì)將www.abc.com和abc.com識(shí)別為不同的兩個(gè)域名,這樣做的后果就是分散了對(duì)網(wǎng)站的關(guān)注度,不利于網(wǎng)站的宣傳和推廣。
僅僅是通過Response.Redirect方法來重定向該連接,雖然可以將連接進(jìn)行重定向,但是無法解決搜索引擎的識(shí)別分散問題的;此問題可通過301重定向來進(jìn)行解決,具體在ASP.NET中可通過如下方法來處理:
private void CheckTopDomainName(HttpContext context) { Uri url = context.Request.Url; string host = url.Host.ToLower(); int count = host.Split('.').Length; bool doubleDomainName = host.EndsWith(".com.cn", StringComparison.CurrentCultureIgnoreCase) || host.EndsWith(".net.cn", StringComparison.CurrentCultureIgnoreCase) || host.EndsWith(".gov.cn", StringComparison.CurrentCultureIgnoreCase) || host.EndsWith(".org.cn", StringComparison.CurrentCultureIgnoreCase); if (count == 2 || (count == 3 && doubleDomainName)) { context.Response.Status = "301 Moved Permanently"; // 避免替換掉后面的參數(shù)中的域名 context.Response.AddHeader( "Location", url.AbsoluteUri.Replace( string.Format("http://{0}", host), string.Format("http://www.{0}", host) ) ); }
更多關(guān)于ASP.NET301實(shí)現(xiàn)的方法實(shí)例:
因?yàn)镮IS設(shè)置301需要在服務(wù)器中配置很麻煩,所以ME選擇了在程序中實(shí)現(xiàn)。
程序中實(shí)現(xiàn)有個(gè)缺點(diǎn)就是執(zhí)行效率沒有在IIS服務(wù)器中速度快。
當(dāng)然了,這里說的只是適合動(dòng)態(tài)網(wǎng)站的,如果都是.html靜態(tài)文件就飄過吧!
好了還是直接上代碼吧:
網(wǎng)頁(yè)首頁(yè)文件index.aspx后臺(tái)代碼
//判斷是否是www.開頭,如果不是301調(diào)整到www.域名 if (!System.Web.HttpContext.Current.Request.Url.ToString().StartsWith("http://www.")) { //301 重定向到 /目錄下 HttpContext.Current.Response.StatusCode = 301; HttpContext.Current.Response.Status = "301 Moved Permanently"; HttpContext.Current.Response.AddHeader("Location", "http://www.qinquan.org/"); HttpContext.Current.Response.End(); }
這里因?yàn)槭俏业莫?dú)立站點(diǎn),所以直接寫www.了。如果是二級(jí)域名就需要根據(jù)需求自己修過了。
欄目頁(yè)/內(nèi)容頁(yè)代碼:
//如果url結(jié)尾不是以/符號(hào)結(jié)尾的,同樣301到末尾增加/符號(hào)。
if (!System.Web.HttpContext.Current.Request.RawUrl.EndsWith("/")) { //301 重定向到 /目錄下 HttpContext.Current.Response.StatusCode = 301; HttpContext.Current.Response.Status = "301 Moved Permanently"; HttpContext.Current.Response.AddHeader("Location", System.Web.HttpContext.Current.Request.RawUrl + "/"); HttpContext.Current.Response.End(); }
相關(guān)文章
C# 沒有動(dòng)態(tài)的數(shù)組,可以用arraylist或list取代
C#里沒有動(dòng)態(tài)的數(shù)組,只能用arraylist或list取代。2009-06-06Biwen.Settings如何添加對(duì)IConfiguration&IOptions的集成支持
Biwen.Settings?是一個(gè)簡(jiǎn)易的配置項(xiàng)管理模塊,主要的作用就是可以校驗(yàn)并持久化配置項(xiàng),比如將自己的配置存儲(chǔ)到數(shù)據(jù)庫(kù)中,JSON文件中等,這篇文章主要介紹了Biwen.Settings如何添加對(duì)IConfiguration&IOptions的集成支持,需要的朋友可以參考下2024-05-05一個(gè)支持普通分頁(yè)和綜合分頁(yè)的MVC分頁(yè)Helper
這篇文章主要為大家詳細(xì)介紹了一個(gè)支持普通分頁(yè)和綜合分頁(yè)的MVC分頁(yè)Helper,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-09-09IIS7偽靜態(tài)web.config配置的方法和規(guī)則
本文主要介紹IIS7上配置偽靜態(tài)的超簡(jiǎn)單的新方法,安裝URLRewrite插件,配置web.config即可。2016-04-04ASP.NET Core中如何利用Csp標(biāo)頭對(duì)抗Xss攻擊
這篇文章主要給大家介紹了關(guān)于ASP.NET Core中如何利用Csp標(biāo)頭對(duì)抗Xss攻擊的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用ASP.NET Core具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09asp.net Page.Controls對(duì)象(找到所有服務(wù)器控件)
通過此對(duì)象找到所有服務(wù)器控件。2008-11-11詳解可跨域的單點(diǎn)登錄(SSO)實(shí)現(xiàn)方案【附.net代碼】
本篇文章主要介紹了可跨域的單點(diǎn)登錄(SSO)實(shí)現(xiàn)方案,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-11-11