Вы не можете сделать это, не полагаясь на Javascript для динамического изменения href. Образом относительные идентификаторы URI преобразуются в абсолютной URI, описан в RFC 3986 Section 5.2.2:
if defined(R.scheme) then
T.scheme = R.scheme;
T.authority = R.authority;
T.path = remove_dot_segments(R.path);
T.query = R.query;
else
if defined(R.authority) then
T.authority = R.authority;
T.path = remove_dot_segments(R.path);
T.query = R.query;
else
if (R.path == "") then
T.path = Base.path;
if defined(R.query) then
T.query = R.query;
else
T.query = Base.query;
endif;
else
if (R.path starts-with "/") then
T.path = remove_dot_segments(R.path);
else
T.path = merge(Base.path, R.path);
T.path = remove_dot_segments(T.path);
endif;
T.query = R.query;
endif;
T.authority = Base.authority;
endif;
T.scheme = Base.scheme;
endif;
T.fragment = R.fragment;
Где R
относительный URL-адрес и T
является мишенью.
Вышеупомянутое в основном говорит о том, что если схема указана в относительном URI, то целевым uri будет весь относительный uri, поэтому единственный способ указать схему - указать весь URL-адрес.
Если вы хотите использовать Javascript-подход, вы можете динамически установить href, используя что-то вроде: a.href = 'https://' + window.location.host + a.getAttribute('href')
. Где a
- ваш AnchorElement.
Вот демо-версии Javascript: http://jsfiddle.net/7DWV5/
Однако, в основном по той причине, что вы столкнулись, это хорошая идея, чтобы либо хранить имя хоста в файле конфигурации, или обнаружить его от заголовок HTTP-запроса Host
в переднем контроллере. Таким образом вы можете просто вставить шаблон в свой HTML-код при создании страницы. Это избавляет вас от необходимости использовать клиентские скрипты для исправления ваших URL-адресов после их создания, что может быть желательно, потому что не у всех есть Javascript.
Добро пожаловать в StackOverflow. Это хороший вопрос. – Paulpro