2011-05-16 37 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标签,消除来自搜索引擎的所有乱七八糟的内容,并只留下内容我们希望在索引中找到。

我会在接下来的几天尝试在测试服务器上运行它并报告回来。