Искать  
 
   
 
Перенаправление на 404 на PHP
Отправлено: 28 Апрель 2011 05:45 P.M.   [ Игнорировать ]
Sr. Member
RankRankRankRank
Всего сообщений:  987
Зарегистрирован  2008-09-27

Какой аналог

{redirect='404'

Только средствами системы на PHP. Первое,ч то нашел

$TMPL->no_results

Не работает)

Профиль
 
 
Отправлено: 28 Апрель 2011 06:54 P.M.   [ Игнорировать ]   [ # 1 ]
Member
Avatar
RankRankRank
Всего сообщений:  224
Зарегистрирован  2010-11-20
<?php
echo header ("HTTP/1.0 404 Not Found");
echo 
header("Location: /404");
?> 
Профиль
 
 
Отправлено: 28 Апрель 2011 07:19 P.M.   [ Игнорировать ]   [ # 2 ]
Sr. Member
RankRankRankRank
Всего сообщений:  987
Зарегистрирован  2008-09-27

Это просто отдаст ответ 404, а хотелось бы перенаправить на ту страницу, котоаря указана в настрйоках шаблона

Профиль
 
 
Отправлено: 28 Апрель 2011 07:39 P.M.   [ Игнорировать ]   [ # 3 ]
Студент
RankRank
Всего сообщений:  131
Зарегистрирован  2010-12-14

Этот код отработает как нужно.
Он выдаст в заголовок HTTP/1.0 404 Not Found
и скажет браузеру что нужно изменить Location на /404 (т.е. обновить страницу)
Попробуй.

Профиль
 
 
Отправлено: 28 Апрель 2011 07:43 P.M.   [ Игнорировать ]   [ # 4 ]
Member
Avatar
RankRankRank
Всего сообщений:  224
Зарегистрирован  2010-11-20
Максим - 28 Апрель 2011 07:19 P.M.

Это просто отдаст ответ 404, а хотелось бы перенаправить на ту страницу, котоаря указана в настрйоках шаблона

Неверный вывод!

Это отправляет клиенту заголовок 404 и перенаправляет на страницу  /404

Как известно есть два метода редиректа: header и refresh

Последний не позволяет вернуться назад, используя кнопку Back (previous).

Любые другие способы реализации механизма редиректа есть ни что иное,
как обертки для одного из двух вышеуказанных...

Профиль
 
 
Отправлено: 28 Апрель 2011 07:48 P.M.   [ Игнорировать ]   [ # 5 ]
Sr. Member
RankRankRankRank
Всего сообщений:  987
Зарегистрирован  2008-09-27

Я понимаю суть метода))
Функция из core.template:

function no_results()
    
{
        
global $FNS$PREFS$OUT;

        if ( ! 
preg_match("/".LD."redirect\s*=\s*(\042|\047)([^\\1]*?)\\1".RD."/si"$this->no_results$match))
        
{
            $this
->log_item("Returning No Results Content");
            return 
$this->no_results;
        
}
        
else
        
{
            $this
->log_item("Processing No Results Redirect");

            if (
$match['2'== "404")
            
{
                $template 
explode('/'$PREFS->ini('site_404'));

                if (isset(
$template['1']))
                
{
                    $this
->log_item('Processing "'.$template['0'].'/'.$template['1'].'" Template as 404 Page');
                    
$OUT->out_type "404";
                    
$this->template_type "404";
                    
$this->process_template($template['0']$template['1']);
                    
$this->cease_processing TRUE;
                
}
                
else
                
{
                    $this
->log_item('404 redirect requested, but no 404 page is specified in the Global Template Preferences');
                    return 
$this->no_results;
                
}
            }
            
else
            
{
                
return $FNS->redirect($FNS->create_url($FNS->extract_path("=".str_replace("&#47;""/"$match['2']))));
            
}
        }
    } 

Я бы хотел что-то типа ее использовать, но она в отдельности не работает. Не докопал еще далье. Когда  из админки именно шаблон берется

Профиль
 
 
Отправлено: 28 Апрель 2011 08:12 P.M.   [ Игнорировать ]   [ # 6 ]
Студент
RankRank
Всего сообщений:  131
Зарегистрирован  2010-12-14

Хм, не совсем понял что тебе нужно
Попробуй посмотреть system/expressionengine/libraries/Functions.php
function redirect

Профиль