301-й редирект для всех знаков вопроса

12
D1
На сайте с 26.02.2013
Offline
61
2424

К примеру, html страница с url-ом site.ru/article/ может быть доступна как так: site.ru/article/?абракадабра, так и вот так site.ru/article/////////

На многих больших сайтах это не работает, типа Хабрахабра. Как сделать то же самое средствами htaccess на обычном html сайте? Чтобы если есть на нём, скажем, только главная страница – site.ru, то никак иначе попасть на неё нельзя было – ни site.ru/?3rw3wf, ни site.ru/&fernsf и т.п.

Мой сайт - klinok.pl.ua.
S
На сайте с 30.09.2016
Offline
469
#1

Вопрос непонятен. По редиректу Вы как раз-таки попадёте на эту страницу. Может быть, нужно не на 301, а на 404?

Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
D1
На сайте с 26.02.2013
Offline
61
#2
Sitealert:
Вопрос непонятен. По редиректу Вы как раз-таки попадёте на эту страницу. Может быть, нужно не на 301, а на 404?

Как пример, проверил ответы сервера от Хабра. Зашёл на https://habrahabr.ru/post/312458/ , после добавил первый раз "/////", второй раз "?32r23r" – ответ сервера 301 на изначальную https://habrahabr.ru/post/312458/

Что происходит с моим сайтом: захожу на http://site.ru/post/ , добавляю те же 2 варианта (первый раз "/////", второй раз "?32r23r") – ответ 200.

V
На сайте с 08.05.2016
Offline
3
#3

ЦМС Джумла?

от слэшей вот это должно помочь

RewriteCond %{REQUEST_URI} (.*/[^/.]+)($|\?)

RewriteRule .* %1/ [R=301,L]

RewriteRule ^(.*)/$ /$1 [R=301,L]

D1
На сайте с 26.02.2013
Offline
61
#4
vicknv:
ЦМС Джумла?

от слэшей вот это должно помочь
RewriteCond %{REQUEST_URI} (.*/[^/.]+)($|\?)
RewriteRule .* %1/ [R=301,L]
RewriteRule ^(.*)/$ /$1 [R=301,L]

Нет, просто сайт на html.

Ввожу в адресную строку чужойсайт.ru/post/?абракадабра ->>> переход происходит на чужойсайт.ru/post/ – как и положено (абракадабра после "?" убирается).

Делаю то же самое с моим сайтом: ввожу в адресную строку мойсайт.ru/post/?абракадабра ->>> переход происходит на мойсайт.ru/post/?абракадабра – абракадабра не убирается.

Я просто не пойму кто писал все эти апачи. Если у меня есть одностраничный сайт, то он и должен быть доступен по ЕДИНСТВЕННОМУ адресу. Но нет. Возможно бесконечное число вариаций со всякими знаками, в том числе вопросительными, множеством слэшей и т.д.

---------- Добавлено 12.10.2016 в 16:44 ----------

vicknv:
от слэшей вот это должно помочь

Нет ли какого-то универсального способа для любых символов? Или это уже что-то на уровне внутренностей, в которых не получится поковыряться и исправить это?

V
На сайте с 08.05.2016
Offline
3
#5

про любые символы не знаю

создайте на хостинге файл .htaccess и добавьте туда

RewriteEngine On

RewriteCond %{REQUEST_URI} (.*/[^/.]+)($|\?)

RewriteRule .* %1/ [R=301,L]

RewriteRule ^(.*)/$ /$1 [R=301,L]

а в robots.txt

Disallow: /*? # # #все ссылки которые содержат этот знак не индексируются

и пусть с вопросами открывается, индексироваться все равно не будет

D1
На сайте с 26.02.2013
Offline
61
#6
vicknv:
про любые символы не знаю

создайте на хостинге файл .htaccess и добавьте туда
RewriteEngine On
RewriteCond %{REQUEST_URI} (.*/[^/.]+)($|\?)
RewriteRule .* %1/ [R=301,L]
RewriteRule ^(.*)/$ /$1 [R=301,L]

а в robots.txt
Disallow: /*? # # #все ссылки которые содержат этот знак не индексируются

и пусть с вопросами открывается, индексироваться все равно не будет

Когда роботов останавливали запреты? Представьте себе ребёнка, которому запретили входить в комнату. С одной стороны, проще будет всё время за ним следить, чтобы он не попал в комнату. Но с другой стороны если эту комнату "удалить", то можно упростить жизнь всем сразу – и тому, кто её охраняет, и охладить пыл того, кто хочет в неё попасть. Думаю суть вы поняли 😂

---------- Добавлено 12.10.2016 в 17:09 ----------

vicknv:
про любые символы не знаю

создайте на хостинге файл .htaccess и добавьте туда
RewriteEngine On
RewriteCond %{REQUEST_URI} (.*/[^/.]+)($|\?)
RewriteRule .* %1/ [R=301,L]
RewriteRule ^(.*)/$ /$1 [R=301,L]

а в robots.txt
Disallow: /*? # # #все ссылки которые содержат этот знак не индексируются

и пусть с вопросами открывается, индексироваться все равно не будет

На счёт вашего кода – он делает бесконечную переадресацию

V
На сайте с 08.05.2016
Offline
3
#7

Так у вас сайт одностраничник?

Слэш нужен на конце?

K0
На сайте с 01.09.2016
Offline
72
#8
dpakyj1a:
Если у меня есть одностраничный сайт, то он и должен быть доступен по ЕДИНСТВЕННОМУ адресу. Но нет. Возможно бесконечное число вариаций со всякими знаками, в том числе вопросительными, множеством слэшей и т.д.

Если у вас есть одностраничный сайт с единственной страницей index.html, то он будет доступен как минимум по двум адресам: site.ru/ и site.ru/index.html без всяких знаков вопроса и слешей. :) Вас этот момент тоже напрягает? :)

D1
На сайте с 26.02.2013
Offline
61
#9
kom09:
Если у вас есть одностраничный сайт с единственной страницей index.html, то он будет доступен как минимум по двум адресам: site.ru/ и site.ru/index.html без всяких знаков вопроса и слешей. :) Вас этот момент тоже напрягает? :)

Если бы только это. Одностраничный сайт – для примера привёл.

В моём случае да, главная страница доступна как site.ru/ и как site.ru/index.html (с index.html идёт редирект на корень), НО я также могу попасть и на site.ru/?3rwa, site.ru/?jiggu и т.д., бесконечное количество вариантов.

Это то же самое, что иметь квартиру, но вместо одной двери у вас присутствуют двери в каждом её миллиметре. На кой чёрт это было придумано, если у меня даже не php сайт, где всюду эти динамичные url-ы со знаками вопроса и прочей ерундой.

M
На сайте с 04.12.2013
Offline
223
#10

http://www.cyberforum.ru/apache/thread1823392.html

Хотя ? без «продолжения» так не прочекаешь. Для лэндинга можно на php что-нибудь такое соорудить:

if (strlen($_SERVER['REQUEST_URI'])>1) тут редирект на главную;

Мы часто примерно так и поступаем, либо делаем вывод лэндинга по всем адресам, но все внутренние по аналогичной представленной выше схеме снабжаем 404-ым статусом.

---------- Добавлено 12.10.2016 в 20:41 ----------

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

---------- Добавлено 12.10.2016 в 20:59 ----------

dpakyj1a:
В моём случае да, главная страница доступна как site.ru/ и как site.ru/index.html (с index.html идёт редирект на корень), НО я также могу попасть и на site.ru/?3rwa, site.ru/?jiggu и т.д., бесконечное количество вариантов.
Если говорить в более широком плане, нужно использовать движки, где контролируется каждый пшик в адресе. Хотя большинство движков и сайтов не интересующие их GET-параметры обычно игнорирует, а иногда еще и PATH_INFO. Но на наших сайтах с этим оч. строго. Даже в простейших движках присутствуют фильтры нормализации адреса (например устранения множественных слешей), а все лишнее закрывается. Вот можно почекать простой движок (на GET-запросах): g09.ru? и т.п.

---------- Добавлено 12.10.2016 в 21:12 ----------

dpakyj1a:
Это то же самое, что иметь квартиру, но вместо одной двери у вас присутствуют двери в каждом её миллиметре. На кой чёрт это было придумано, если у меня даже не php сайт, где всюду эти динамичные url-ы со знаками вопроса и прочей ерундой.
Так натяните ваш статик на какой-нибудь простой двиг. Сейчас уже 2016 год – это так для справки, если вы не в курсе. Либо пишите правила для .htaccess и т.п.
Домены и скрипт для коротких ссылок: https://u75.ru/domains-for-shortcuts
12

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