Почему ссылка теряет данные: исправьте параметры и фрагменты
Различайте & и # в URL, избегайте двойного кодирования и проверяйте в WikiURL именно ту ссылку, которую собираетесь отправить.

Открытая страница не всегда получает ожидаемые данные
Вы подготовили ссылку на поиск кофе и чая. Страница открывается, но результаты не соответствуют намерению. Прежде чем винить сервер или сокращатель, проверьте точный адрес, которым поделились. В вымышленном примере q=cafe&te не обозначает единое значение cafe&te при обычной интерпретации параметров формы: & разделяет записи. Кроме того, #precios обозначает фрагмент. Перед проверкой настоящего адреса замените example.invalid своей страницей, поддерживающей такой запрос.
Разделите диагностику на три вопроса: какую страницу открыть, какие данные она должна получить и какую часть затем показать? Копируйте URL ссылки, а не только видимую надпись кнопки. Сохраните исходную версию перед изменением. Руководство предлагает проверить компоненты, а затем результат через WikiURL; оно не обещает, что любой сайт распознаёт q или что успешный ответ означает правильные результаты поиска.
https://example.invalid/buscar?q=cafe&te#preciosЕсли амперсанд относится к тексту, не используйте его как разделитель
Для буквального поиска cafe & te амперсанд должен находиться внутри значения q. При построении параметров с URLSearchParams передавайте некодированный текст; сериализация представит этот символ как %26. MDN объясняет, что интерфейс применяет кодирование форм при преобразовании параметров в текст и представляет пробелы знаком +. Это не означает, что надо заменить все амперсанды URL: некоторые намеренно разделяют параметры.
Пример JavaScript создаёт адрес из основы, задаёт поисковое значение и отдельно добавляет фрагмент. Запустите его локально в среде JavaScript, чтобы увидеть результат, не отправляя поиск на вымышленный домен. Если не программируете, используйте ссылку, созданную вашей поисковой страницей, вместо ручного соединения текста. Сравните ожидаемое значение с результатами сайта; наличие %26 не доказывает, как конкретное приложение интерпретирует данные.
const url = new URL("https://example.invalid/buscar");
url.searchParams.set("q", "cafe & te");
url.hash = "precios";
console.log(url.href);
// https://example.invalid/buscar?q=cafe+%26+te#preciosФрагмент не является параметром, который получает сервер
MDN указывает, что часть после # обрабатывается клиентом и не отправляется серверу при запросе ресурса. Страница может использовать её для перехода к разделу, например precios, или для другого поведения приложения. Поэтому в q=cafe#te часть te не дополняет значение, полученное сервером в этом запросе. Если # должен входить в поисковый текст, внутри значения он представляется как %23, что показывает третий адрес.
Проверьте эффекты отдельно: поиск должен выдавать нужные результаты, а фрагмент — приводить к нужному месту. Раздел должен существовать или приложение должно распознавать фрагмент. Инструмент, запрашивающий сайт с сервера, сам по себе не подтверждает прокрутку браузера к разделу. Не удаляйте и все фрагменты как универсальное исправление: можно убрать именно ту часть, которая нужна получателю.
https://example.invalid/buscar?q=cafe%23te#preciosКодируйте значение один раз, а не весь адрес
RFC 3986 различает символы-разделители компонентов и данные и предостерегает от повторного кодирования или декодирования одной строки. Если передать cafe%26te как уже кодированный текст функции, ожидающей исходное значение, знак процента может стать %25, образуя %2526. Вы добавили слой, а не автоматически сохранили желаемый поиск. Две строки примера помогают распознать такое изменение.
Исправление зависит от происхождения данных. Человеческий текст передавайте без кодирования интерфейсу, создающему параметры. Полный корректный URL не считайте одним значением для повторного кодирования всего адреса. Документируйте входные данные каждой функции или формы. Избегайте глобальных замен %, & или #: они могут изменить правильные разделители, необходимые параметры или пути, которые вы не собирались менять.
q=cafe%26te
q=cafe%2526teИспользуйте WikiURL для ответа, браузер — для содержания
Получив настоящий публичный адрес, вставьте его в проверку URL WikiURL. Изучите возвращённые HTTP-статус и конечный адрес. Реализация выполняет запрос с сервера и следует перенаправлениям; это помогает обнаружить неожиданное назначение. Не вставляйте ссылки управления, пароли или адреса с приватными данными. Не проверяйте example.invalid из примеров: здесь он служит вымышленной целью.
Также откройте настоящую версию в браузере и проверьте поиск и раздел. Успешный ответ может загрузить страницу, не применив нужный фильтр. При перенаправлении сравните параметры с эталоном и наблюдайте фрагмент в браузере. Инструмент не интерпретирует логику приложения, не удостоверяет безопасность и не доказывает наличие у аккаунта прав на содержание. Цель — объединить сведения об ответе с функциональной проверкой.
Проверьте копию, которую получит другой человек
Вставьте окончательную ссылку в канал распространения и откройте эту копию до широкой отправки. Убедитесь, что не включили точку в конце предложения, не потеряли часть при копировании и не перепутали видимый текст с адресом. Если содержание должно быть публичным, проверяйте без зависимости от администраторского сеанса. При преобразовании в QR проверьте также адрес, показанный сканированием, кроме исходного файла.
Ведите небольшой журнал: первоначальный адрес, ожидаемое поисковое значение, нужный фрагмент, отправленный URL и наблюдавшийся результат. При ошибке вернитесь к конкретному компоненту и повторите тест после исправления. Публикуйте только проверенную версию. Так вы отличите ошибку построения параметров от перенаправления, меняющего адрес, или поведения браузера, не превращая открывающуюся ссылку в гарантию сохранения всех предназначенных к отправке данных.