Apache Переписать Нумери c Аргументы Root - PullRequest
0 голосов
/ 05 марта 2020

Мы находим запросы, поступающие следующим образом:

https://www.example.com/?1537249139=

Числа в параметре строки запроса выглядят как случайные временные метки. Это обходится нам в нашем предварительном бюджете, поэтому мы бы хотели, чтобы 301 перенаправил их обратно на root. Я пробовал это:

   RewriteCond %{QUERY_STRING} ^([0-9]*)=$
   RewriteRule / [L,R=301]

Но это не работает. Есть идеи?

1 Ответ

0 голосов
/ 05 марта 2020
RewriteRule / [L,R=301]

Не соответствует URL-адресу примера. Вам не хватает первого аргумента ( Pattern ), который соответствует запрошенному URL-пути:

RewriteRule Pattern Substitution [ flags ]

Ваш пример URL предназначен только для документа root (/), поэтому в .htaccess:

это должно быть записано, как показано ниже
RewriteCond %{QUERY_STRING} ^\d+=$
RewriteRule ^$ / [R=301,L]

В .htaccess URL-путь, соответствующий шаблону RewriteRule , не включает префикс sla sh (поэтому исходная директива не будет соответствовать).

Обратите внимание, что это «перенаправление», а не «перезапись», как указано в заголовке вашего вопроса.

Однако, если это совершенно недействительные запросы (возможно, даже ботом?), Тогда не было бы предпочтительнее просто вернуть 403 или 404? Например:

RewriteRule ^$ - [F]

ИЛИ

RewriteRule ^$ - [R=404]

?

Ссылка:
https://httpd.apache.org/docs/2.4/mod/mod_rewrite.html#rewriterule

...