Закрыть доступ к ссылка site.ru/?ssilka через htaccess

Курсор
На сайте с 04.01.2011
Offline
90
727
Добрый вечер, вроде простая задача, но голову сломал. Нужно закрыть доступ к ссылкам вида site.ru/?ssilka (site.ru/?***** - вместо звёздочек любой текст) , так что бы поисковые системы получали 404 страницу, либо отсутствие доступа к страницам данного вида. Желательно через htaccess, но можно и через nginx. Спасибо за любые мысли
Алеандр
На сайте с 08.12.2010
Offline
183
#1
Смотрите в сторону
RewriteCond %{QUERY_STRING}
ну и по отработке на строку запроса - нужное правило на запрет, или на 404, или на редирект, если требуется.

Кстати, 404 я бы не ставил, давно не использую, чтобы не плодить ошибки, на которые тот же вебмастер ругается. Лучше уж 301 тогда на какую-то целевую страницу.
Курсор
На сайте с 04.01.2011
Offline
90
#2
Спасибо, правильно направление подсказали) А дальше гугл поможет)
Vladimir
На сайте с 07.06.2004
Offline
531
#3
Курсор :
Добрый вечер, вроде простая задача, но голову сломал. Нужно закрыть доступ к ссылкам вида site.ru/?ssilka (site.ru/?***** - вместо звёздочек любой текст) , так что бы поисковые системы получали 404 страницу, либо отсутствие доступа к страницам данного вида. Желательно через htaccess, но можно и через nginx. Спасибо за любые мысли

Для вердпресса

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/wp-admin/
RewriteCond %{REQUEST_URI} !^/wp-login.php
RewriteCond %{REQUEST_URI} !^/wp-json/
RewriteCond %{REQUEST_URI} !^/index.php
RewriteCond %{THE_REQUEST} \?
RewriteRule ^(.*)$ /$1? [R=301,L]
</IfModule>

- Если используете поиск, добавьте в исключения поиск на сайте

Для других CMS добавляем в исключения свои админ папки( ссылки)

Аэройога ( https://vk.com/aeroyogadom ) Йога в гамаках ( https://vk.com/aero_yoga ) Аэройога обучение ( https://aeroyoga.ru ) и просто фото ( https://weandworld.com )
Vladimir
На сайте с 07.06.2004
Offline
531
#4
Алеандр #:
Смотрите в сторону
RewriteCond %{QUERY_STRING}
ну и по отработке на строку запроса - нужное правило на запрет, или на 404, или на редирект, если требуется.

Кстати, 404 я бы не ставил, давно не использую, чтобы не плодить ошибки, на которые тот же вебмастер ругается. Лучше уж 301 тогда на какую-то целевую страницу.
Тем не менее, для таких ?go=http-ссылка , лучше 404
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{THE_REQUEST} \?go=(.*)$
RewriteRule .* /$0 [R=404,L]
</IfModule>
Алеандр
На сайте с 08.12.2010
Offline
183
#5
Vladimir #:
Тем не менее, для таких ?go=http-ссылка , лучше 404
Никакого смысла, поскольку у вас в любом параметре может быть упоминание чужой ссылки. ?go, /go/, ?redirect и т.д.
И это только из тех, что наиболее вероятны. Все не перечислите.
Vladimir
На сайте с 07.06.2004
Offline
531
#6
Алеандр #:
Никакого смысла, поскольку у вас в любом параметре может быть упоминание чужой ссылки. ?go, /go/, ?redirect и т.д.
И это только из тех, что наиболее вероятны. Все не перечислите.
Зачем перечислять, все варианты есть в вебмастере. Или сложно понять, что это просто пример?
В моем вебмастере кроме /?go=http://***  , других нет. Будут...добавлю.
Антоний Казанский
На сайте с 12.04.2007
Offline
619
#7
Курсор :
Добрый вечер, вроде простая задача, но голову сломал. Нужно закрыть доступ к ссылкам вида site.ru/?ssilka (site.ru/?***** - вместо звёздочек любой текст)

Вот здесь уже стоп.

Что конкретно имеется ввиду? Вам мешают ссылки вида site.ru/?lubaya-posledovatelnost или site.ru/?go=http://adres-storonnego-saita ?

Здесь ключевое различие. В первом случае - это адрес внутренней страницы, который начинается со знака "?"

Во-втором случае - это вариант внешнего обращения, который нередко используется как ссылочный спам по технологии open redirect.

К первому варианту также могут относится внутренние страницы с динамическими get параметрами, например, пагинация, вида site.ru/?page=1, могут адреса сортировок site.ru/?name=n&brand=n и т.д.

Приведите несколько точных адресов, которые для вас нежелательны.

√ SEO продвижение https://akazansky.ru - экспертный аудит сайтов ( https://akazansky.ru/audit-sajtov ), внедрение эффективных решений цифрового маркетинга. Обучение автоматизации с помощью Zennoposter https://goo-gl.me/6Zypu
fliger
На сайте с 17.09.2015
Offline
107
#8
Антоний Казанский #:

Здесь ключевое различие. В первом случае - это адрес внутренней страницы, который начинается со знака "?"

Во-втором случае - это вариант внешнего обращения

Интересное умозаключение. Откуда вы знаете, что разработчик заложил в своем скрипте, передавая в него данные через $_SERVER['QUERY_STRING']?

Антоний Казанский
На сайте с 12.04.2007
Offline
619
#9
fliger #:
Интересное умозаключение. Откуда вы знаете, что разработчик заложил в своем скрипте, передавая в него данные через $_SERVER['QUERY_STRING']?

Безусловно, не знаю, поэтому и хочу уточнить.

Сам по себе пример - site.ru/?ssilka (site.ru/?***** - вместо звёздочек любой текст)  довольно абстрактный. Это можно быть и просто URL адрес с использование знака вопроса, а может быть и оный с get параметром в котором используется ссылка на внешний сайт. 

Если там get параметр, то конечно проще его обработать через  QUERY_STRING, но если там нет get параметра, а просто последовательность со знаком вопроса, тогда придётся через THE_REQUEST. 

Как чаще всего и бывает на форуме, вопрос неполный, поэтому и вызывает расхождения в толкованиях :)

W1
На сайте с 22.01.2021
Offline
286
#10
Антоний Казанский #:
вопрос неполный

И чего там неполного? Человек не использует GET-параметры (хотя он может быть и не знает, что они у него где-то используются) и не хочет отдавать ответ 200 по запросам с  GET-параметрами.

Мой форум - https://webinfo.guru –Там я всегда на связи

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