Jump to content

Необходимо настроить ответ сервера HTTP/1.1 404 Not Found


Recommended Posts

Страницы с произвольными параметрами обрабатываются некорректно, при запросе подобных адресов http://Nanofakt.ru/?qwerty123456 сервер отдает ответ  HTTP/1.1 200 OK. Необходимо настроить ответ сервера HTTP/1.1 404 Not Found для подобных страниц. ПОдскажите как все это дело настроить?

post-6625-0-09619500-1408732002.jpg

Link to post
Share on other sites

Есть вопрос? Задай его профессиональным веб-мастерам, SEO и другим специалистам!

Я переписывался со службой поддержкой хостинга мне сказали "Потестировали и видно, что у вас скрипт
возвращает index.php на любую несуществующую страницу, а должна быть
страница 404. Проверяйте в плагинах не установлено ли подобного или в
коде темы" Вот не знаю в каком файле нужно покопаться...Месяц назад было все нормально...Пока в шаблоне не поковырялся...Вот что сделал уже не помню...

Link to post
Share on other sites

Есть три варианта из-за чего это могло быть: Ставил плагин суперкеш, закрывал от индексации в файле роботс календарь и поставил скрипт какой-то, либо что-то с редиректом! Все больше ничего. У кого мысли есть?

Link to post
Share on other sites

Все у вас правильно функционирует. После вопросительного знака задаются переменные. Т.е. будет отображаться страница, которая задана до "?".

 

Просто пропишите canonical.

 

P.S. попробуйте на любую страницу любого сайта написать каракули после "?". Отобразится та же страница.

Link to post
Share on other sites

Я вот так сделал и работает:

<?

$goodparams = array_flip(array('name', 'op', 'go', 'cat', 'func', 'gid', 'type', 'lid', 'pagenum', 'do', 'orderby', 'pid', 'file', 'us_name', 'num', 'pagenum', 'id', 'sid', 'satid', 'min', 'cid', 'sortby', 'show', 'new_topic', 'as', 'catid', 'utm_source', 'utm_medium', 'post', 'sa', 'year', 'month', 'month_l', 'user_name', 'type', 'd', 'new', 'ran', 'top', 'url', 'word', 'best', 'hits')); //массив "хороших" параметров думаю ты догадаешься что здесь писать)
foreach ($_GET as $param => $value) {
if (!isset($goodparams[$param])) {
header("HTTP/1.0 404 Not Found");
//безболезненно отдаем 404 ошибку, 
//что отнюдь не мешает нам показать юзерю контент
break;
}
}

?>

Врубаешь в шапке где нужно проверять и готово!

Link to post
Share on other sites

Все у вас правильно функционирует. После вопросительного знака задаются переменные. Т.е. будет отображаться страница, которая задана до "?".

 

Просто пропишите canonical.

 

P.S. попробуйте на любую страницу любого сайта написать каракули после "?". Отобразится та же страница.

У меня нет проблем с дублями и т.д. Проблема не в canonical там все правильно...При запросе к несуществующей странице отдается неверный статус код!(Вот в чем проблема)

Link to post
Share on other sites

Добавьте просто строчку в .htaccess

Errordocument 404 /404.php

И залейте в корень файл 404.php и ответ сервера будет корректный.

В качестве примера дам свой старенький и всегда рабочий 404.

<?php 
header('Content-type: text/html; charset=utf-8');
header("HTTP/1.0 404 Not found");
$url = "http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
$url = urldecode ($url);
$her = <<<HER
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8" />
<title>404 Not found</title>
<style>
body, * {
	margin:0;
	padding:0;
}
#cont {
	width:800px;
	margin:100px auto 40px auto;
	padding:20px;
	border:1px dotted #555;
	background:#FFFFCC;
}
h1 {
	font:normal 24px Arial;
	color:#CC3333;
	padding-bottom:15px;
}
p {
	font:normal 19px Arial;
	color:#888;
}
p .url , p a:hover{
	color:#CC3333;
	border:1px solid transparent;
	border-bottom:1px solid #CC3333;
	padding:2px 4px 2px 4px;
}
.url:hover {
	cursor:help;
	background:#fff;
	border:1px dashed #CC3333;
}
p a {
	text-decoration:none;
	border-bottom:1px dotted #0000CC;
	color:#0000CC;
}
</style>
</head>
<body>
<div id="cont">
<h1>Ошибка 404</h1>
<p>Запрашиваемая страница <span class="url" title="Такой страницы нет на сайте!">$url</span> не существует или была удалена.</p>
</div>
<p style="text-align:center;"><a href="/">Перейти на главную страницу сайта</a></p>
</body>
</html>
HER;
echo $her;

Link to post
Share on other sites

 

Добавьте просто строчку в .htaccess

Errordocument 404 /404.php

И залейте в корень файл 404.php и ответ сервера будет корректный.

В качестве примера дам свой старенький и всегда рабочий 404.

<?php 
header('Content-type: text/html; charset=utf-8');
header("HTTP/1.0 404 Not found");
$url = "http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
$url = urldecode ($url);
$her = <<<HER
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8" />
<title>404 Not found</title>
<style>
body, * {
	margin:0;
	padding:0;
}
#cont {
	width:800px;
	margin:100px auto 40px auto;
	padding:20px;
	border:1px dotted #555;
	background:#FFFFCC;
}
h1 {
	font:normal 24px Arial;
	color:#CC3333;
	padding-bottom:15px;
}
p {
	font:normal 19px Arial;
	color:#888;
}
p .url , p a:hover{
	color:#CC3333;
	border:1px solid transparent;
	border-bottom:1px solid #CC3333;
	padding:2px 4px 2px 4px;
}
.url:hover {
	cursor:help;
	background:#fff;
	border:1px dashed #CC3333;
}
p a {
	text-decoration:none;
	border-bottom:1px dotted #0000CC;
	color:#0000CC;
}
</style>
</head>
<body>
<div id="cont">
<h1>Ошибка 404</h1>
<p>Запрашиваемая страница <span class="url" title="Такой страницы нет на сайте!">$url</span> не существует или была удалена.</p>
</div>
<p style="text-align:center;"><a href="/">Перейти на главную страницу сайта</a></p>
</body>
</html>
HER;
echo $her;

Скажите куда именно добавить строку "Errordocument 404 /404.php" ВОт мой сам .htaccess # BEGIN McHost

Redirect 301 /admin/ /wp-admin/

# END McHost

 

# BEGIN WordPress

<IfModule mod_rewrite.c>

RewriteEngine On

RewriteBase /

RewriteRule ^index\.php$ - [L]

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule . /index.php [L]

</IfModule>

 

# END WordPress

Link to post
Share on other sites

Вроде в любое место добавить можно, попробуйте после # END McHost

# BEGIN McHost
 Redirect 301 /admin/ /wp-admin/
 # END McHost
 Errordocument 404 /404.php
 # BEGIN WordPress
 <IfModule mod_rewrite.c>
 RewriteEngine On
 RewriteBase /
 RewriteRule ^index\.php$ - [L]
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule . /index.php [L]
 </IfModule>

 # END WordPress
Link to post
Share on other sites

 

Вроде в любое место добавить можно, попробуйте после # END McHost

# BEGIN McHost
 Redirect 301 /admin/ /wp-admin/
 # END McHost
 Errordocument 404 /404.php
 # BEGIN WordPress
 <IfModule mod_rewrite.c>
 RewriteEngine On
 RewriteBase /
 RewriteRule ^index\.php$ - [L]
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule . /index.php [L]
 </IfModule>

 # END WordPress

Ничего не изменилось, моя проблема Не Решилась!!! Кто еще чем сможет подсказать?

Link to post
Share on other sites

да проблемы как таковой и нету... откуда возьмутся ссылки вида Nanofakt.ru/?qwerty123456 , если ты их сам не будешь плодишь как например в первом сообщении. Навряд ли конкуренты будут подобным образом на сайт ссылки делать.  А если движок подобную чушь генерирует, то надо движок а править, а не костыли вставлять.  Если уж делать нечего, то делай как boav посоветал со списком разрешенных параметров. 

Link to post
Share on other sites

Вы не поняли дело то не в ссылках!!! Проблема в ответе сервера на ошибку 404 должна быть ошибка 404 а сервак выдает код 200!!! Вот в этом вся проблема!!!

Link to post
Share on other sites

master11, сервер не выдает 404 т.к ваш код ее не выдает, если вы хотите 404, найдите места в коде которые генерируют контент и пропишите там условия.
просто вордпрес с этим не замарачивался: http://wordpress.com/?hola=1&dfsdfsd=2&rrrr=3

Link to post
Share on other sites

Вы не поняли дело то не в ссылках!!! Проблема в ответе сервера на ошибку 404 должна быть ошибка 404 а сервак выдает код 200!!! Вот в этом вся проблема!!!

так бы сразу и написал. у тебя страница nanofakt.ru/404.php отдает 200 код. В вордпресе особо не разбираюсь. но попробуй в самом вверху 404.php прописать  header("HTTP/1.0 404 Not Found");  либо в условии где вызывается данный файл.

Link to post
Share on other sites

так бы сразу и написал. у тебя страница nanofakt.ru/404.php отдает 200 код. В вордпресе особо не разбираюсь. но попробуй в самом вверху 404.php прописать  header("HTTP/1.0 404 Not Found");  либо в условии где вызывается данный файл.

Попробовал ....прописал не помогает...Ответ сервера все равно 200

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...