Назад | Перейти на главную страницу

Перенаправить пользователя, если URL-адрес содержит определенное ключевое слово с htaccess?

Мне нужна помощь с установкой правила внутри .htaccess что делает следующее:

Всякий раз, когда запрашиваемый URL содержит ключевое слово love затем перенаправьте пользователя на другой URL-адрес или, возможно, покажите страницу 404.

Уточнение еще немного: если кто-то пытается получить доступ к этому URL -> www.example.com/love или www.example.com/?love или любой URL-адрес, содержащий слово "любовь", должен быть перенаправлен на страницу 404.

Вам нужно иметь дело с сопоставлением чего-то в пути и сопоставлением чего-то в строке запроса отдельно, поскольку Apache не предоставляет переменную, содержащую и то, и другое. Первый RewriteRule здесь совпадает с "любовью" на пути, а второе правило ограничивается RewriteCond соответствует слову "любовь" в строке запроса.

RewriteRule .*love.* - [R=404]

RewriteCond %{QUERY_STRING} .*love.*
RewriteRule .* - [R=404]

Всякий раз, когда запрашиваемый URL содержит ключевое слово "любовь"

Если вы хотите исключить слова, содержащие эти буквы, как вложенное слово. например. «перчатка», «неряшливый», «гвоздика» и т. д. тогда вам нужно включить границы слов в регулярное выражение, например. \blove\b.

Вы также можете сделать это с помощью одного правила, проверив THE_REQUEST серверная переменная, которая содержит как URL-путь, так и строку запроса.

Например:

RewriteEngine On

RewriteCond %{THE_REQUEST} \blove\b
RewriteRule ^ - [R=404]
RewriteRule ^(.+?)www.domain.com.*\.love/.*$ - [R=404]