htaccess - как выдавать 404 по таким URL /?p=*

tulp
На сайте с 29.04.2005
Offline
77
14924

Всем добрый вечер

После смены cms боты пытаются ходить по старым URL, закрыл в robots.txt

но некоторые боты не реагируют на Disallow: /?p в robots.txt

Как выдавать 404 по таким URL /?p=* через htaccess ?

firefox19
На сайте с 05.11.2009
Offline
34
#1

RewriteEngine On
RewriteRule ^/?p=(.*)$ 404.php

к примеру

10 примеров

Ваши идеи - наша работа (http://yaweb.ru) Продам Сайт агентства недвижимости (/ru/forum/561489)
tulp
На сайте с 29.04.2005
Offline
77
#2

я уже пытался вот так просто решить, но что то не удается экранировать знак вопроса, судя по ахтунгам в сети это вообще вселенская проблема и простое экранирование не работает для для знака ?

все дело в этом знаке вопроса :(

RewriteRule ^/?p=(.*)$ 404.php

работает только для урлов начинающихся с /p

и не работает для /?p

M
На сайте с 17.04.2008
Offline
88
MBo
#3


RewriteCond %{QUERY_STRING} p=(.*)
#тут на выбор одна из след. строк:

#в хедер выдаст 410 – страница больше не существует
RewriteRule ^ - [G]

#в хедер выдаст 403 – доступ запрещён
RewriteRule ^ - [F]

#в хедер выдаст 404 – нет такой страницы
RewriteRule ^ - [R=404,L]
tulp
На сайте с 29.04.2005
Offline
77
#4

MBo, Спасибо, ваши правила вполне подходят

это правило нормально обрабатывается и вызывает 410

RewriteCond %{QUERY_STRING} p=(.*)

RewriteRule ^ - [G]

RewriteRule ^ - [R=404,L] вызывает internal server error 500

полагаю 410 нормально воспринимаются поисковыми машинами ?

[Удален]
#5

Была охота апач этим мучать?

if(isset($_GET['p']))

{
header("HTTP/1.0 404 Not Found");
header("HTTP/1.1 404 Not Found");
include "404.php";
exit();
}
firefox19
На сайте с 05.11.2009
Offline
34
#6
я уже пытался вот так просто решить, но что то не удается экранировать знак вопроса, судя по ахтунгам в сети это вообще вселенская проблема и простое экранирование не работает для для знака ?

ну напишите:

RewriteRule ^/(.)p=(.*)$ 404.php

делов-то :)

M
На сайте с 17.04.2008
Offline
88
MBo
#7
tulp:

полагаю 410 нормально воспринимаются поисковыми машинами ?

да, нормально.

tulp
На сайте с 29.04.2005
Offline
77
#8
firefox19:
ну напишите:

RewriteRule ^/(.)p=(.*)$ 404.php

делов-то :)

так не могу, у меня новые страницы есть начинающиеся на /p

сейчас отдается 410, посмотрю как отреагируют

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий