|
|
|
| имеется файл
<?
header('HTTP/1.1 404 Not Found');
?>
|
при обращении к нему возвращаются заголовки
Array
(
[0] => HTTP/1.1 404 Not Found
[1] => Date: Thu, 19 Nov 2009 18:47:29 GMT
[2] => Server: Apache/2.0.61 (Unix) mod_ssl/2.0.61 OpenSSL/0.9.8g mod_dp20/0.99.2 mod_python/3.3.1 Python/2.5.1 mod_ruby/1.2.6 Ruby/1.8.6(2007-09-24)
[3] => Content-Length: 0
[4] => Content-Type: text/html
)
|
при обращении к несуществующему файлу возвращаются
Array
(
[0] => HTTP/1.1 404 Not Found
[1] => Date: Thu, 19 Nov 2009 18:47:29 GMT
[2] => Server: Apache/2.0.61 (Unix) mod_ssl/2.0.61 OpenSSL/0.9.8g mod_dp20/0.99.2 mod_python/3.3.1 Python/2.5.1 mod_ruby/1.2.6 Ruby/1.8.6(2007-09-24)
[3] => Set-Cookie: PHPSESSID=1tko6j6gqfuk02bm33aht91m76; path=/
[4] => Expires: Thu, 19 Nov 1981 08:52:00 GMT
[5] => Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
[6] => Pragma: no-cache
[7] => Content-Length: 4422
[8] => Connection: close
[9] => Content-Type: text/html
)
|
но почему во втором случае выдаётся страница error404.htm, прописанная мною в .htaccess, а в первом случае не выдаётся ничего, пустая страница? как заставить сервер в первом случае показать страницу с ошибкой?
для поисковых ботов это не принципиально, а вот для пользователей пустая страница - плохой знак ) | |
|
|
|
|
|
|
|
для: Flok
(19.11.2009 в 21:51)
| | А зачем вы вообще отправляете такой заголовок, если файл существует, я не понимаю. | |
|
|
|
|
|
|
|
для: neadekvat
(19.11.2009 в 22:31)
| | у меня адрес страницы вида http://www.домен.ru/html-14
модреврайтом превращается всё в /view.php?rub=html&id=14
дело в том, что если кто-кто оставит на своём сайте ссылку вида http://www.домен.ru/dfhuwheqb , то скрипт view.php должен вывести ошибку, что такой переменной rub в базе нет. Для человека реализация проста, вывести ошибку через echo, да закончить работу скрипта. А для поисковых машин требуется отослать 404 ошибку, иначе эта мусорная страница "/dfhuwheqb" проиндексируется, что не есть хорошо для оптимизации сайта в целом. Не хочу делить скрипт на разветвления по UA, что для поисковых ботов 404 + пустая страница, а для людей 200 + страница с текстом ошибки. я хочу, чтобы в таких случаях и человеку и машине было одинаково понятно, что страницы нет.
вот и требуется, чтобы сервер сделал вид, что он ничего не нашел. | |
|
|
|
|
|
|
|
для: Flok
(19.11.2009 в 22:50)
| | Да бросьте.
Вы ненужные телодвижения делаете.
1. Кому нафиг нужно ставить ссылку на заведомо несуществующую страницу.
2. По какому такому запросу поисковик должен выдать в результатах ссылку на эту несуществующую страницу?
Не мучайте себе моск, выводите в своем дизайне на месте, где выводится страница, что такой не существует. | |
|
|
|
|
|
|
|
для: neadekvat
(19.11.2009 в 22:54)
| | и всё же вопрос состоит не в этом, и я хочу помучать себе мозг. Кроме того, для самообразования хочется узнать, почему не выводится страница с ошибкой, когда вызываю ошибку искусственно.
1. заведомоложные врятли поставят, а устаревшие - вполне может быть. и от их индексации надо избавляться
2. хороший вопрос, но, увы, ответа дать не могу) | |
|
|
|
|
|
|
|
для: Flok
(19.11.2009 в 23:02)
| | Ну смотрите: вы создали страницы. Пусть на неё поставили страницы и даже проиндексировали.
Вы удалили страницу.
Теперь если на неё придут - то увидят ошибку "Страницы не существует". Пусть вас еще раз индексирует поисковик - теперь там уже _другой_ текст - текст ошибки. Теперь на эту страницу с поисковика попасть - малоевроятно.
А почему не работает - потому что страница ошибки показывается на уровне apache, а вы работаете на уровне php. | |
|
|
|
|
|
|
|
для: neadekvat
(19.11.2009 в 23:19)
| | а как тогда на уровне php реализовать то, что реализуется на уровне apache ? | |
|
|
|
|
|
|
|
для: Flok
(19.11.2009 в 23:26)
| | Ну, проводите проверку на существование страницы до того, как пойдет содержимое
И если не существует - header("location: error_404.html");
естессно надо создать $error_404.html
Но никаких заголовков об ошибке не будет, конечно.
Да когда на уровне apache делается, по-моему, такого заголовка тоже нет. Заголовок об ошибке отдается только когда у вас ничего на этот случай не заготовлено и не сделано | |
|
|
|