Игнорирование q параметра в адресной строке

Гугля и Яша при различных рекламных кампаниях любят к ссылкам подставлять параметр q, вследствие чего пользователь переходя по ссылке получает 404 ошибку, ибо этот параметр зарезервирован системой под ЧПУ. Обойти это можно, если вспомнить про то, что $_SERVER['REQUEST_URI'] дает нам целиком, что вбито в адресной строке. Далее путем не сложного кода получаем плагин под катом, после установки которого все работает как надо… Ну по крайней мере должно)

//<?php
/**
 * Q replace
 *
 * Remove $_GET['q'] from url
 *
 * @category    plugin
 * @internal    @events OnPageNotFound
 * @internal    @modx_category Content
 * @internal    @properties 
 * @internal    @disabled 0
 * @internal    @installset base
 */
if ((strpos($_SERVER['REQUEST_URI'],"&q=")!==false) or (strpos($_SERVER['REQUEST_URI'],"?q=")!==false)){
	$urls = explode('?',$_SERVER['REQUEST_URI']);
	$gets = array();	
	if ($urls[1]){	
		foreach(explode('&',$urls[1]) as $param){
			$params = explode('=',$param);
			if ($params[0]!='q') $gets[] = $param;
		}	
	}
	if (count($gets)) $url = $urls[0].'?'.implode('&',$gets);
	else $url = $urls[0];
	$content = file_get_contents(MODX_SITE_URL.$url);
	header("HTTP/1.1 200 OK");	
	echo $content;	
	exit();	
}


P.S. По идее должно работать на обоих ветках: Evo и Revo

0 комментариев

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.