Page 1 of 1

Несуществующая категория

Posted: Sat Jan 12, 2013 7:01 pm
by adaliska
Как сделать, чтобы при запросе несуществующей категории (group_name) смарт отдавал бы 404 ?

Re: Несуществующая категория

Posted: Sun Jan 13, 2013 9:31 pm
by admin
Встроенной такой фичи нет
можно дописать в комон свой кусок с проверкой категории и тп

Re: Несуществующая категория

Posted: Mon Jan 14, 2013 8:31 am
by adaliska
За отсутствие такой встроенной возможности сеошники съедят :( Это значит что к любому сайту, у которого есть категории в урлах, можно со стороны нагенерить множество паразитных страниц и таким образом понизить его в гугле. Поэтому очень хочется такую фичу в будущем, и не только касамо категорий, а вообще по отношению ко всем встроенным экшенам смарта.

А сейчас как это решить - запросом к БД в rot_groups посмотреть и всё?

Re: Несуществующая категория

Posted: Mon Jan 14, 2013 1:29 pm
by admin
да

а есть такие претенденты когда кто-то линковал на чужой сайт дабы нагенерить кучу страниц ?

Re: Несуществующая категория

Posted: Mon Jan 14, 2013 5:39 pm
by adaliska
admin wrote:а есть такие претенденты когда кто-то линковал на чужой сайт дабы нагенерить кучу страниц ?
А то. Традиционная сеошная болезнь:

https://www.google.ru/#hl=ru&newwindow= ... 80&bih=893

Re: Несуществующая категория

Posted: Mon Jan 14, 2013 5:40 pm
by adaliska
Вот здесь наиболее красочно: http://kravcoff.ru/seo-ataka.html

Re: Несуществующая категория

Posted: Tue Jan 15, 2013 8:40 pm
by admin
довольно проблематичная опция получается. тк многие используют свои параметры, к тому же есть параметры даты (те можно двигать по одной секунде условно изменяя урлы сайта и эти все варианты будут валидны) и тп.

Добавлено

http://smartcj.com/wiki/doku.php?id=ru: ... return_404


для варианта с несущиствующим или недостаточно валидным параметром - лучше полагаться на своей дизайн.
Мне кажется удачным вариант такой:

1. создаем субтемпелйт checkit например и инклудим его во всех рабочих темпелйтах
2. в нем пишем

Code: Select all

<?
$allowed_params = array('param1','param2');

foreach ($_GET as $k => $v) {
	if (!in_array($v, $allowed_params)) {
   		header("HTTP/1.1 404 Not Found");
		exit;
	}
}


таким образом проверяя какие параметры вообще разрешено передавать в нашем варианте.

3. туда же можно добавить проверку спонсора например (все спонсоры есть в переменной $GLOBALS['sponsors'] )

думаю стоит начать с этого и тогда уже смотерть что получится.