Joomla noindex, следуйте PHP-коду - PullRequest
0 голосов
/ 16 мая 2011

У меня есть новостной сайт, основанный на Joomla, который содержит массу бесполезных страниц, отображаемых в индексах поисковых систем.По крайней мере, в качестве быстрого решения, пока я не смогу перестроить сайт с нуля, я хочу реализовать метатег NOINDEX, FOLLOW на всех страницах, кроме домашней страницы и страниц статей, заканчивающихся на .html

.фрагменты кода, найденного здесь и в другом месте Я придумал это:

<?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 и уверен, что яЯ наверняка совершил пару ошибок, поэтому мне было интересно, сможет ли добрая душа повторить мой код и сообщить мне, можно ли его использовать, прежде чем я случайно взломал свой сайт.

Спасибо,

Том

Ответы [ 3 ]

1 голос
/ 16 мая 2011

Не лучше ли для этого использовать файл robots.txt ?

Некоторые основные сканеры поддерживают директиву Allow, которая может противодействовать следующей директиве Disallow. Это полезно, когда кто-то запрещает весь каталог, но все же хочет, чтобы некоторые документы HTML в этом каталоге были просканированы и проиндексированы. Хотя в стандартной реализации первый соответствующий шаблон robots.txt всегда выигрывает, реализация Google отличается тем, что шаблоны Allow с одинаковым или большим количеством символов в пути директивы выигрывают у соответствующего шаблона Disallow. Bing использует директиву Allow или Disallow, которая является наиболее конкретной.

Чтобы быть совместимыми со всеми роботами, если кто-то хочет разрешить отдельные файлы в каталоге, запрещенном другим способом, необходимо сначала разместить директиву Allow, а затем Disallow, например:

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

В этом примере будет запрещено все, что находится в / folder1 /, за исключением /folder1/myfile.html, так как последний будет совпадать первым. Однако в случае Google порядок не важен.

0 голосов
/ 18 мая 2011

прислушиваясь к советам, представленным здесь, и другу, которого я придумала:

вам нужно перейти в / public_html / library / joomla / document / 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 на каждой странице сайта, удалив весь испорченный контент из поисковых систем и оставив только тот контент, который мы хотим найти в индексе.

Я попытаюсь запустить его на тестовом сервере в ближайшие несколько дней и сообщу.

0 голосов
/ 16 мая 2011

Это никогда не будет совпадать:

$_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'])
...