Как избавляются от квадратных скобок в УРЛе при использовании мультиселекта?

Asar
На сайте с 23.08.2004
Offline
334
732

Ставим мультиселект.

При отправке ГЕТ формы получаем урл, включающий, например, такое: ?color[]=45&color[]=55.

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

Вопрос: как решают проблему умудренные опытом граждане? Мне пришло в голову только JS, который будет перелапачивать это в нечто наподобие ?color=45-55, но почему-то этот вариант кажется не айс. Есть что-то поумнее?

totamon
На сайте с 12.05.2007
Offline
437
#1

А почему бы форму в POST не отправлять?

Домены и хостинг https://8fn.ru/regru | Дедик от 3000р https://8fn.ru/73 | VPS в Москве https://8fn.ru/72 | Лучшие ВПС, ТП огонь, все страны! https://8fn.ru/inferno | ХОСТИНГ №1 РОССИИ https://8fn.ru/beget
Asar
На сайте с 23.08.2004
Offline
334
#2

Потому что «народ часто использует ссылки на этих самых форумах и прочем подобном».

Lord Maverik
На сайте с 15.04.2003
Offline
471
#3

Используйте сокращатель ссылок. Например goo.gl

RedMall.Ru (https://redmall.ru) - Товары из Китая (Таобао, Tmall) с проверкой качества, скидка для форумчан 7% Партнерская программа 2 уровня: 5% + 5%. Подробнее. (https://redmall.ru/about/partner/)
L
На сайте с 07.12.2007
Offline
351
#4
Asar:
Ставим мультиселект.
При отправке ГЕТ формы получаем урл, включающий, например, такое: ?color[]=45&color[]=55.

Всё зависит от того, отдаёте ли вы одинаковый текстовый контент страницы по этим url или нет.

Если контент - разный, то можно мультиселект сделать без атрибута name=... и он отправляться на сервер не будет. А по onSubmit формы яваскриптом собирать значения из мультиселекта и заносить их номера в hidden поле формы, например, через запятую.

При одинаковом контенте возникают нечёткие дубли страниц, с которыми придётся бороться при помощи rel canonilcal.

Или можно после отправки формы яваскриптом переделывать url результирующей страницы на #color=45,color=55.

То есть, до отправки формы имеете url типа site.ru/выбрать_цвета, а после - site.ru/выбрать_цвета#color=45,color=55. При наличии в url #color=45,color=55(внешняя ссылка) - подтягиваете нужный контент с сервера на Аяксе.

ДП
На сайте с 23.11.2009
Offline
203
#5
Asar:
Мне пришло в голову только JS, который будет перелапачивать это в нечто наподобие ?color=45-55, но почему-то этот вариант кажется не айс.

Мне кажется, что такой принцип тут наиболее разумен - js'ом как-то преобразовывать параметр, чтобы не было квадратных скобочек. Я бы как-то так и сделал.

А про риски и rel=canonical вам Ladycharm уже написала.

Ragnarok
На сайте с 25.06.2010
Offline
239
#6

Asar, возможно в какой-то момент обработки ссылки вставить urlencode?

//TODO: перестать откладывать на потом
K
На сайте с 03.06.2015
Offline
45
#7

В теории при копировании урла браузер сам должен перекодировать. Подозреваю что ТС то самое и имеет ввиду - видуху урла после кодирования.

MYSQL PHP JS HTML CSS SEO TXT США СССР

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