Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вернуть 404 при редиректе 
V
    Опции темы
AXS
Дата 27.6.2010, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 115
Регистрация: 26.9.2008
Где: РК

Репутация: -1
Всего: -1



Доброго времени, форумчане! )
Помогите разобраться в следующей ситуации:
----------------------------------------------------------------------
У меня организован следующий алгоритм отображения несуществующих страниц:

В файле .htaccess
Код

ErrorDocument 401 /show/error/401/
ErrorDocument 403 /show/error/403/
ErrorDocument 404 /show/error/404/
php_flag register_globals Off
Options -Indexes 

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule mod/(.*)$ index.php?mod=$1
RewriteRule action/(.*)$ index.php?action=$1
RewriteRule show/(.*)$ index.php?show=$1 [L]


При действительно не существующих страницах - всё ок. 
Но вот в чём загвоздка - движок организован так:
Первый параметр ссылки (mod|action|show) определяет что будем делать - активировать модуль, совершать какое либо действие или просто показывать материал. Дальше зависит от последующих параметров, например, если это show, то анализируется параметр $GET['page']
Код

switch($GET['page']) {
  case 'article':
    include './modules/article_router.php';
  break;

  case 'error':
    include './modules/error_router.php';
  break;

  case 'user':
    include './modules/user_router.php';
  break;
}


Ну вот так грубо говоря. Но если параметр $GET['page'] неизвестен движку надо бы показать 404 юзеру... А тут ничего не происходит...
Добавил дефолт:
Код

  default:
    header('HTTP/1.1 404 Not Found');
    header('location: '.DVG_HOST.'show/error/404');
  break;

Кстати в модуле error_router.php 404 заголовок тоже на этот случай вызывается.
И вот вылезла проблема: при редиректе пофиг какой заголовок ты отправил, если это не 30х статус, то редирект передаст свой статус 302.

Так то всё ок, но для поисковиков это плохо - обратившись к странице http://mysite.ru/show/fignya/bla/bla он получит сначала 302 (страница временно перемещена), а следом 404 (не существует). А это не есть хорошо.

Как побороть сей баг? Чтобы формально не существующие страницы возвращали 404?
--------------------
<><><> AXS - Live Organizer v1.0  <><><> 0_o
PM MAIL WWW ICQ Skype GTalk   Вверх
AXS
Дата 27.6.2010, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 115
Регистрация: 26.9.2008
Где: РК

Репутация: -1
Всего: -1



Что то туплю я вроде... smile

Код

  default:
    $GET['mode'] = '404';
    include './modules/error_router.php';
    include './modules/main_router.php'; 
  break;


В error_router.php вызывается header('HTTP/1.1 404 Not Found') и прочие советы юзеру и все рады...
И чё я в этот редирект упёрся?... ###...
--------------------
<><><> AXS - Live Organizer v1.0  <><><> 0_o
PM MAIL WWW ICQ Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0486 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.