301.inc.php,DeDeCMS默认首页及WWW域的301跳转
你是否留心過:通過域名訪問網站首頁時,網頁返回Http狀態碼是什么?甚至訪問內頁時,Http狀態碼又是什么嗎?
大多數人可能會想當然的認為首頁返回的肯定是200,因為我們很容易觀察到首頁能否可以正常打開以及URL是否發生過明顯跳轉,然而,真的如我們預想的那樣嗎!
在近期接手的SEO項目里,我們就遇到類似的問題:URL????????????Http狀態碼
http://***.com????????????302,跳轉至http://***.com/index.html
http://***.com/index.html????????????200
http://www.***.com????????????302,跳轉至http://www.***.com/index.html
http://www.***.com/index.html????????????200
內頁????????????500
以上數據暴露出幾個嚴重的SEO問題:
1、主域與www域之間的跳轉問題
2、域訪問與默認首頁之間的跳轉問題
3、頁面可以打開但是狀態碼返回的不是200
上述SEO問題的處理邏輯:
1、通常情況下,網站主要使用www域,而不使用主域(國內網民的訪問習慣),考慮到SEO因素,為了避免復制網頁問題,一般會將主域做301跳轉然后重定向到www二級域,這樣搜索引擎就不會收錄兩個版本的網站首頁,也避免了頁面權重分流,具體實現方法,可以參考文章“如何實現兩個域名內頁之間的301跳轉"
2、域訪問與默認首頁之間本不應該存在任何跳轉動作。試想一下,如果直接訪問網站域名卻發生了跳轉,無論是301還是302,首頁權重都會被降低,這對SEO而言是多么可怕的一件事情,首頁低權重,內頁也在劫難逃!正確的SEO處理方式是:訪問域時,直接返回200。以DedeCMS為例,如果網站的默認首頁不是index.html或者index.php優先級高于index.html,當以域方式訪問網站首頁時,程序默認設置為URL發生301跳轉至index.html。
3、用工具全面檢測下頁面Http狀態碼,確認頁面200。
DeDeCMS解決www域跳轉與默認首頁跳轉問題的方法:
修改根目錄下的index.php文件,用以下代碼進行替換:
PHP代碼<?php
//主域名301跳轉到www
$redirect301=1;//301跳轉開關,1代表打開,0代表關閉
$index_file='index.html';//指定網站默認首頁文件,DeDeCMS設置為index.html,不支持SSI(shtml/shtm)
if(substr($_SERVER['SERVER_NAME'],0,4)!='www.'&&$redirect301)//判斷URL中是否帶www
{
header('HTTP/1.1 301 Moved Permanently');
header('Location:http://www.'.$_SERVER['SERVER_NAME']); //301跳轉到www
exit();
}
if(!file_exists(dirname(__FILE__).'/data/common.inc.php'))
{
header('Location:install/index.php');
exit();
}
//自動生成HTML版
if(isset($_GET['upcache']))
{
require_once(dirname(__FILE__) ."/include/common.inc.php");
require_onceDEDEINC."/arc.partview.class.php";
$GLOBALS['_arclistEnv'] ='index';
$row=$dsql->GetOne("Select * From `#@__homepageset`");
$row['templet'] = MfTemplet($row['templet']);
$pv=newPartView();
$pv->SetTemplet($cfg_basedir.$cfg_templets_dir."/".$row['templet']);
$pv->SaveToHtml(dirname(__FILE__).'/index.html');
include(dirname(__FILE__).'/index.html');
exit();
}
include(dirname(__FILE__).'/'.$index_file);//聯接網站默認首頁文件
?>
總結
以上是生活随笔為你收集整理的301.inc.php,DeDeCMS默认首页及WWW域的301跳转的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python中用于标识字符串的定界符_0
- 下一篇: python暂停和恢复游戏_pygame