|
|
|
| У меня такая ситуация. Написал скрипт для обработки ЧПУ - все урлы формируются через одну страницу. Если по какому-либо запросу страница не найдена (т.е. в БД не найдено одной из составляющих ЧПУ) автоматически включается файл страницы 404 ошибки. Но в браузер при этом не отдаётся код 404 ошибки, урл в адресной строке не меняется (так и задумано). Поисковики индексируют эту 404 страницу.
Можно как-то сделать так, чтобы в браузер отдавался код ошибки, но загружалась моя страница 404 ошибки, не используя редирект и чтобы поисковики не индексировали 404 страницу?
У меняесть есть такая идея. В htaccess прописать директиву ErrorDocument 404 /error/index.php. В скрипте вместо включения файла 404 страницы, нужно чтобы серверу отдавался код 404 ошибки и сервер бы реагировал на эту ситуацию согласно правилу в htaccess. При этом в адресной строке оставался бы запрашиваемый адрес, а отдавалась бы 404 страница.
Такое реально сделать? Или это из область фантастики? :) Можно указать серверу как он должен реагировать на не найденную страницу из скрипта? Что можно ещё в моей ситуации сделать?
Кстати, описанный выше способ работает, через редирект (вместо включения файла), но при этом в адресной строке меняется и урл. А редирект для поисковиков по-моему не есть хорошо.... | |
|
|
|
|
|
|
|
для: simbel
(13.10.2007 в 18:14)
| | код покажите | |
|
|
|
|
|
|
|
для: ZeeG
(13.10.2007 в 18:49)
| | Вот часть кода. В htaccess просто описано правило которое перенаправляет все запрсы на страницу с этим кодом и некоторые ислючения.
<?php
$url = $_SERVER['REQUEST_URI'];
$uriel = array_values(array_filter(explode('/', $url)));
require_once (''.$_SERVER['DOCUMENT_ROOT'].'/config.php');
if(count($uriel) == 0)
require('ken/index.php');
elseif(count($uriel) == 1)
{
$cag=$uriel[0];
$poisk = mysql_query('SELECT CID, Burl, Plas FROM CATEGORIES WHERE Burl="'.$cag.'"');
if(!$poisk)
exit (mysql_errno() . ': ' . mysql_error() . '<br>');
$ca = @mysql_result($poisk, 0, 1);
$plas = @mysql_result($poisk, 0, 2);
if($ca==$uriel[0] && ($plas=='m' || $plas=='t'))
{
$_GET['ca']=mysql_result($poisk,0);
require('ken/index.php');
}
elseif($ca==$uriel[0] && $plas=='b')
{
$_GET['ca']=mysql_result($poisk,0);
require('ken/ods.php');
}
else
{
require('ken/404.php');
exit();
}
}
?>
|
| |
|
|
|