Закрытые от индексации страницы сайта с лишними переменными в адресной строке

14.02.2018  20:50

Стандартная задача сделать страницы сайта с лишними переменными в адресной строке неиндексируемыми. Решение простое:

$allowed_var=array("page");//разрешённый переменные
$tm=explode("?",$_SERVER['REQUEST_URI']);
if (isset($tm[1])) {
   $k=preg_match_all("/(.*)=(.*)&/Uis",$tm[1]."&",$am);
   if (empty($k)) {
	//после ? есть какое-то говно
	$redirect_url = str_replace("?".$tm[1],"",$_SERVER['REQUEST_URI']);
	//temporary
	// header("HTTP/1.1 301 Moved Permanently"); header("Location: http://".$_SERVER['HTTP_HOST'].$redirect_url);
	echo '<meta name="robots" content="noindex, nofollow" />';
   }
	$bm=array();
	for ($i=0; $i < $k; $i++) {
		if ($am[2][$i]=="" or !in_array($am[1][$i],$allowed_var)) {
			//temporary
			// header("HTTP/1.1 301 Moved Permanently"); header("Location: http://".$_SERVER['HTTP_HOST'].$tm[0]);
			echo '';
		}//continue;
		$bm[]=$am[1][$i]."=".$am[2][$i];
	}
	$tm[1]=implode("&",$bm);
	$_SERVER['REQUEST_URI'] = ($tm[1]=="")? $tm[0]: implode("?",$tm);
}


Решением поделился друг Taunt, а я чутка модернизировал под мета-теги. Либо жёсткий редирект, либо meta-tag robots.

Решение подойдёт для постраничного вывода, работы разных фильтров на сайте.

В случае Битрикса код лучше добавить прямо в основной шаблон сайта в header.php. В случае Yii тоже прокатит добавить в основной шаблон (да и в большинстве CMS у которых шаблоны единые.


перейти в Блог

Ударим лайками по бездорожью, разгильдяйству и бюрократизму!


Ключевые слова (тэги): PHP 39  SEO 12  web-программирование 62  молодым домохозяйкам 40  

Вам есть что сказать — ну я же чую.
Высказаться о наболевшем, я выслушаю:
Имя


email (не публикуется)