php как читать URL включая символы # и / - PullRequest
0 голосов
/ 03 декабря 2011

У меня есть сайт с базой номеров деталей. Мой менеджер хочет набрать:

www.site.com/products/part#

и страница автоматически переведет вас на соответствующую страницу.

Прямо сейчас у меня есть URL-адрес и мод-переписать страницу:

www.site.com/search.php?sku=xxxx

И сценарий php будет $ _GET sku и выполнять поиск, проблема в том, что некоторые номера деталей содержат символы # и /, например:

www.site.com/products/VS816UT#ABA

Я могу обойти любые косые черты с помощью mod-rewrite, но браузеры удаляют символ # до того, как $ _GET сможет его увидеть.

Есть ли способ обойти это?

Ответы [ 3 ]

3 голосов
/ 03 декабря 2011

Все, что за хешем (#), не отправляется веб-серверу.

Если вы хотите обойти это, почему бы не добавить #ABA с косой чертой:

www.site.com/products/VS816UT/ABA

И используйте mod_rewrite, чтобы правильно сопоставить его с вашим файлом PHP.

1 голос
/ 03 декабря 2011

символ # зарезервирован для тегов привязки в браузерах в соответствии с веб-стандартами.

0 голосов
/ 03 декабря 2011

Там должно быть без проблем, но вам нужен обработчик для / products /, который получает завершающую часть URL (фреймворки, такие как codeigniter, хороши в этом).

Вам нужен одностраничный обработчик, который отправляет на основе столько (или меньше) URL-адреса, сколько вам нужно.

К сожалению, по крайней мере, некоторые браузеры удаляют # и все после него.Я выполнил тест с использованием URL-адреса с символом # и проверил, что браузер отправил с помощью tcpdump, и получил следующее:

URL:

http://127.0.0.1/onepage/products/zss#www?b=A#B

tcpdump o / p:

GET /onepage/products/zss

Предположительно, сервер-сервер - единственный способ, которым это может работать.

...