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
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'] )
думаю стоит начать с этого и тогда уже смотерть что получится.