Действительные разделители URL-адресов

У меня длинный URL с несколькими значениями.

Пример 1:

http://www.domain.com/list?seach_type[]=0&search_period[]=1&search_min=3000&search_max=21000&search_area=6855%3B7470%3B7700%3B7730%3B7741%3B7742%3B7752%3B7755%3B7760%3B7770%3B7800%3B7840%3B7850%3B7860%3B7870%3B7884%3B7900%3B7950%3B7960%3B7970%3B7980%3B7990%3B8620%3B8643%3B8800%3B8830%3B8831%3B8832%3B8840%3B8850%3B8860%3B8881%3B9620%3B9631%3B9632

Моя область поиска переменных содержит только 4 цифры (пример 4000, 5000), но может содержать их много. Прямо сейчас я разделяю их в URL, используя ; как символ разделителя. Хотя, как видно из примера 1, преобразуется в %3B. Это заставляет меня поверить, что это плохой символ для использования.

Каков лучший разделитель URL?

Ответ 1

Ну, согласно RFC1738, действительные URL могут содержать только буквы a - z, знак плюса (+), период и дефис (-).

Как правило, я бы использовал плюс для разделения областей поиска. Таким образом, ваш URL-адрес станет http://www.domain.com/list?seach_type=0&search_period=1&search_min=3000&search_max=21000&search_area=6855+7470+7700+...

- EDIT -

Как указал GinoA, я неправильно прочитал документ. Следовательно, "$-_.+!*'()," также являются допустимыми символами. Я все равно пойду с знаком +.

Ответ 2

Я считаю, что вы неправильно поняли связанный документ . Это ограничение распространяется только на часть "схемы" URL-адреса. В случае URL-адресов WWW это "http" .

Далее в следующем разделе документа говорится:

Таким образом, только буквенно-цифровые символы, специальные символы "$ -_. +! * '()," и    зарезервированные символы, используемые для их зарезервированных целей, могут использоваться    unencoded в URL.

Я бы использовал запятую (,). Однако плюс (+) и тире (-) также являются разумными вариантами.

Кстати, в этом документе также упоминается, что в некоторых схемах зарезервирована точка с запятой (;).

Ответ 3

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

Вероятно, пространство может быть хорошим выбором. Он будет преобразован в символ + в URL-адресе, поэтому будет более читаемым, чем письмо.

Пример: search_area=4000+5000+6000

Ответ 4

"+" следует интерпретировать как пробел "", когда типом контента является application/x-www-form-urlencoded (стандартный для HTML-форм). Это может быть связано с вашим серверным программным обеспечением.

Я предпочитаю "!". Он не получает URL-код (по крайней мере, не в Chrome), и он резервирует "+" для использования в качестве реального символа пространства в типичном случае.

Ответ 5

Я очень опаздываю на вечеринку, но допустимая строка запроса может повторять переменные, поэтому вместо...

http://x.y.z/list?type=0&period=1&min=3000&max=21000&area=6855+7470+7700

... вы также можете использовать...

http://x.y.z/list?type=0&period=1&min=3000&max=21000&area=6855&area=7470&area=7700