Искать  
 
   
 
Редирект с url_title на entry_id
Отправлено: 27 Май 2011 10:16 P.M.   [ Игнорировать ]
Администратор
Avatar
RankRankRankRank
Всего сообщений:  1423
Зарегистрирован  2007-12-27

Необходимо сделать, чтобы при обращении к странице //catalog/view/{entry_id} перекидывало на страницу //catalog/view/{url_title}
решения с плагинами редирект не подходят,

{if segment_3=='{entry_id}'}ок{if:else}{exp:redirect_to location="//catalog/view/{entry_id}"}{/if} 

т.к. страница зацикливается...

Firefox определил, что сервер перенаправляет запрос на этот адрес таким образом, что он никогда не завершится.

есть вариант сделать все ссылки на entry_id, подождать пока проиндексируется, потом сделать на всех ссылках url_title 404 ошибку, но это плохой вариант, т.к. есть внешние ссылки на страницы и не хотелось бы, чтобы переходя по ним, человек попадал на 404 страницу.

Кто знает решение?

 Подпись 

ExpressionEngine - SEO-ориентированный движок

Профиль
 
 
Отправлено: 28 Май 2011 02:20 A.M.   [ Игнорировать ]   [ # 1 ]
Sr. Member
RankRankRankRank
Всего сообщений:  987
Зарегистрирован  2008-09-27

может так))

<?php
global $IN$FNS;
if(
is_numeric($IN->SEGS['3']))
{
    $FNS
->redirect('/catalog/view/url_title');
}
else
{
    
echo 'ok';
}
?> 
Профиль
 
 
Отправлено: 28 Май 2011 12:00 P.M.   [ Игнорировать ]   [ # 2 ]
Member
Avatar
RankRankRank
Всего сообщений:  224
Зарегистрирован  2010-11-20

Это будет работать (php на входе)

{exp:channel:entries channel="catalog" ... }
{if no_results}{redirect
="/404"}{/if}
<?php
if(is_numeric('{segment_3}'))
{
    header 
("HTTP/1.1 301 Moved Permanently");
    
header("Location: /catalog/view/{url_title}");
    exit();
}
?>
...
...
{/exp:channel:entries} 
Профиль
 
 
Отправлено: 28 Май 2011 12:20 P.M.   [ Игнорировать ]   [ # 3 ]
Администратор
Avatar
RankRankRankRank
Всего сообщений:  1423
Зарегистрирован  2007-12-27
Afgan - 28 Май 2011 12:00 P.M.

Это будет работать (php на входе)

{exp:channel:entries channel="catalog" ... }
{if no_results}{redirect
="/404"}{/if}
<?php
if(is_numeric('{segment_3}'))
{
    header 
("HTTP/1.1 301 Moved Permanently");
    
header("Location: /catalog/view/{url_title}");
    exit();
}
?>
...
...
{/exp:channel:entries} 

Спасибо!!!!
Все работает, только PHP на выходе (Output)

 Подпись 

ExpressionEngine - SEO-ориентированный движок

Профиль