Доброго всем времени суток. Иногда приходится делать некоторые полезности. Решил себе их вынести, может еще кому пригодятся ...
1. После вмешательства в работу сайта SEO-шников часто приходится перебивать настройки url. Вот одна из них. Проверка на корректность url для раздела каталога. Если не корректно - 301 редирект на верное значение.
AddEventHandler("main", "OnBeforeProlog", Array("MyClass", "MyOnBeforePrologHandler"), 50); class MyClass { function MyOnBeforePrologHandler() { if(strpos($_SERVER['REQUEST_URI'],'/catalog/')!==false){ $pattern = '|([\d]+)-([A-za-z0-9-_]+)\/(.*)$|si'; preg_match_all($pattern,$_SERVER['REQUEST_URI'],$out,PREG_SET_ORDER); $SID = $out[0][1]; $SCODE = $out[0][2]; $ADD_PARAMS = $out[0][3]; $RESURL = '/catalog/'.$SID.'-'.$SCODE.'/'; if(CModule::IncludeModule('iblock')){ $res = CIBlockSection::GetByID($SID); if($ar_res = $res->GetNext()){ if($RESURL!=$ar_res['SECTION_PAGE_URL']){ $RESURL = $ar_res['SECTION_PAGE_URL'].$ADD_PARAMS; CHTTP::SetStatus('301 Moved Permanently'); LocalRedirect($RESURL, "301 Moved Permanently"); } } } } } } |
Дальше сверяем данные из базы с данными из урла и если не совпадают - редирект.