2014-11-20 5 views
0

, если вы остаетесь на сайте, это «http: //www.demo.com/demo/index.php». на этой странице, имеет две метки в <a href="link.php?id=1">first</a>
и <a href="http://www.google.com">second</a>, при нажатии кнопки «первый», интернет-адрес «HTTP: //www.demo.com/demo/link.php?id=1», но вы нажимаете «второй», почему нет «http: //www.demo.com/demo/ http://www.google.com»? У меня нет идеи. Но я стараюсь попробоватьВ HTML «href» automate

+0

Добро пожаловать в StackOverflow, @Tom! Вещь внутри атрибута 'href' - это URL. В Интернете есть интересные объяснения, например http://www.tutorialspoint.com/html/understanding_url_tutorial.htm, http://de.slideshare.net/ProdigyView/url-parts-tutorial или http://doepud.co .uk/blog/anatomy-of-a-url, а также официальная спецификация: https://tools.ietf.org/html/rfc3986 – Boldewyn

ответ

2

URL-адреса имеют несколько компонентов (например, схему, имя хоста, строку запроса).

Вы можете опустить любое количество из них слева и URL будет разрешен относительно другого URL-адреса.

link.php?id=1 опускает схему, имя хоста и /, который указывает верхнюю часть пути, поэтому он разрешен относительно текущего URL-адреса.

Второе начинается со схемы, поэтому ни один из текущих URL-адресов не сохраняется.

Если вы хотите, относительный URI туда, то вы должны использовать префикс точек в соответствии со спецификацией:

Сегмент пути, который содержит символ двоеточия (например, «вот что:») не может как первый сегмент ссылки относительного пути, так как ошибочно принимается за имя схемы. Такой сегмент должен быть , которому предшествует точечный сегмент (например, «./this:that»), чтобы сделать ссылку на относительный- .

См. the URI spec для дальнейшего ознакомления.

+0

Я хорошо понимаю это, спасибо. – Tom

+0

Малое добавление: у вас _can_ есть ':' в относительном URL-адресе, но тогда вы должны избежать этого: ':' → '% 3A'. Затем он больше не распознается как разделитель схем. – Boldewyn