2011-05-16 36 views
0

我有一個基於joomla的新聞網站,有大量無用的頁面顯示在搜索引擎索引中。至少作爲一個快速修復,直到我可以從頭開始重新構建網站,我希望在除了以.html結尾的主頁和文章頁面之外的所有頁面上實現NOINDEX,FOLLOW meta標記Joomla noindex,按照PHP代碼

處理各種片段代碼中找到hereelsewhere我想出了這一點:

<?php 
if ((JRequest::getVar('view') == "frontpage") || ($_SERVER['REQUEST_URI']=='*.html')) { 
echo "<meta name=\"robots\" content=\"index,follow\"/>\n"; 
} else { 
echo "<meta name=\"robots\" content=\"noindex,follow\"/>\n"; 
} 
?> 

我還是很新的PHP編程,我相信我一定已經做了幾個錯誤,所以我在想,如果一個善良的靈魂將能夠給我的代碼一次,讓我知道如果可以使用之前,我不小心覈實我的網站。

感謝,

湯姆

回答

0

這永遠不會匹配:

$_SERVER['REQUEST_URI']=='*.html' 

==是文字比較不解析通配符。您可以檢查與SUBSTR一個字符串的結尾:

substr($_SERVER['REQUEST_URI'], -5) == '.html' 

,或者您可以使用正則表達式:

//This will match when .html is enywhere inside the string 
preg_match('/\.html/', $_SERVER['REQUEST_URI']) 

//This will match when .html is at the end of the string, but the 
//substr solution is faster in that case 
preg_match('/\.html$/', $_SERVER['REQUEST_URI']) 
1

那豈不是更好地使用robots.txt文件呢?

一些主要的抓取工具支持Allow指令,它可以抵消下面的Disallow指令。如果不允許整個目錄,但仍希望抓取並索引該目錄中的某些HTML文檔,這非常有用。雖然通過標準實現,第一個匹配的robots.txt模式總是獲勝,但Google的實現不同之處在於允許指令路徑中具有相同或更多字符的模式勝過匹配的Disallow模式。 Bing使用最具體的Allow或Disallow指令。

爲了給所有的機器人兼容,如果想允許,否則禁止目錄中的單個文件,有必要將允許指令(S)第一,其次是不允許,例如:

Allow: /folder1/myfile.html 
Disallow: /folder1/ 

此示例將禁止/ folder1/except /folder1/myfile.html中的任何內容,因爲後者將首先匹配。儘管如此,谷歌的訂單並不重要。

+0

我會爲此使用robots.txt文件,因爲有一些SEO/SEF擴展程序會將元標記添加到您選擇的頁面。 – 2011-05-16 22:23:48

+0

嗨,robots.txt的問題,因爲我看到它是我將不得不禁止每個部分,我不想索引這是複雜的,因爲我們的系統自動生成新的部分。如果我不允許所有內容,只允許主頁和.html頁面,那麼這些部分根本就不會被窺探,從而有效地遮蔽了搜索引擎的所有更深層次的文章。 – Tom 2011-05-17 04:21:27

+1

@Tom,如果你使用'Allow'指令,則不行。只要允許首頁和文章目錄,並禁止其他一切。 – Svish 2011-05-17 10:50:31

0

從這裏海報和一個朋友我已經想出這個服用建議:

你需要去/的public_html /庫/的Joomla /文件/ HTML和編輯HTML。PHP

更換

//set default document metadata 
    $this->setMetaData('Content-Type', $this->_mime . '; charset=' . $this->_charset , true); 
    $this->setMetaData('robots', 'index, follow'); 

//set default document metadata 
$this->setMetaData('Content-Type', $this->_mime . '; charset=' . $this->_charset , true); 

$queryString = $_SERVER['REQUEST_URI']; 
if (($queryString == '') || ($queryString == 'index.php/National-news') || ($queryString == 'index.php/Business') || ($queryString == 'index.php/Sport') || (substr($queryString, -5) == '.html')) { 
$this->setMetaData('robots', 'index, follow'); 
}else { 
$this->setMetaData('robots', 'noindex, follow'); 
} 

這將更新網站上的每一頁上的元robots標籤,消除來自搜索引擎的所有亂七八糟的內容,並只留下內容我們希望在索引中找到。

我會在接下來的幾天嘗試在測試服務器上運行它並報告回來。