.htaccess, как перенаправить фальшивые ссылки с помощью строки запроса - PullRequest
0 голосов
/ 24 января 2019

Я пытаюсь 410 перенаправить с .htaccess.

У меня есть несколько тысяч поддельных ссылок в индексе Google

все они начинаются с

http://example.com/?96ncajmj​8anbvaaxomq    
http://example.com/?6amdrg-b​zzjna2ydgwj    
http://example.com/?2ecpioij​pxgsne_n1  
http://example.com/?eamppu-s​mk2p3pjyvf0yn  

, какой синтаксисиспользовать RewriteCond %{QUERY_STRING}

для перенаправления всех таких адресов на 410 (все, начиная с ?)

RewriteCond% {QUERY_STRING} ^? не работает

В логах apache я вижу только:

my_IP - - [24/Jan/2019:10:45:32 +0100] "GET /?fbdffdgfdgfdgdfg HTTP/1.1" 200 48308 "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36"

Кстати, в .htaccess также существует такое правило

    RewriteEngone on 
RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=410,L]

для блокировки этой фальшивой ссылки

/ index.php? 01qpwrjvmr8kjv7e8

/ index.php? 01gkby5wbr-dlvqq

и работает нормально

есть также правило

    # 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

1 Ответ

0 голосов
/ 24 января 2019

Это должно сделать то, что вы просите:

RewriteEngone on
RewriteCond %{QUERY_STRING} ^[-a-z0-9_]+$
RewriteRule ^/?$ [R=410,END]

Это правило должно работать аналогичным образом в конфигурации хоста http-серверов (что вы предпочитаете) или в файле динамической конфигурации.Если вам действительно нужно использовать один из этих динамических файлов, то позаботьтесь о том, чтобы его интерпретация вообще была включена в конфигурации хоста и она находится в папке хоста DOCUMENT_ROOT.

В случае, если вы получаете внутреннийошибка сервера (статус http 500) с использованием приведенного выше правила, возможно, вы используете старую версию http-сервера apache.В этом случае вы увидите определенный намек на неподдерживаемый флаг [END], попробуйте использовать старый флаг [L], тогда он, вероятно, будет работать так же и здесь, хотя это немного зависит от вашей настройки.

...