2016-01-15 3 views
1

Есть ли способ связать домен верхнего уровня (TLD) с простым HTML?Ссылка HTML на TLD

<a href="{magic}/">Go to TLD</a> 

Imagine Я нахожусь на http://subdomain.example.com/subfolder. Теперь все, что мне нужно сделать, чтобы перейти к корню папка использует / как href атрибут - отлично.

А что, если я хочу прыгнуть на http://example.com не http://subdomain.example.com?

или даже лучше:

от http://subdomain.example.com/subfolder к http://example.com/subfolder (такой же вложенная)?

Конечно, я мог бы сделать это в JavaScript, как это:

var urlParts = location.hostname.split('.'); 
 
var tld = urlParts.slice(-2).join('.'); 
 

 
var a = document.createElement('a'); 
 
a.href = '//' + tld; 
 
a.innerHTML = "Go to TLD"; 
 

 
var a2 = document.createElement('a'); 
 
a2.href = '//' + tld + window.location.pathname; 
 
a2.innerHTML = "Go to same folder on TLD"; 
 

 
document.body.appendChild(a); 
 
document.body.appendChild(a2);

Но не иначе?

+0

Вы всегда можете использовать регулярное выражение, если вам не нравится ваш текущий метод. – Shomz

+1

Невозможно. Если вы хотите изменить имя хоста, вы должны использовать абсолютный URL-адрес 'http: // new.host.name.example.com'. ** БЕЗ ** части 'http: // hostname.com', ВСЕ URL-адреса будут интрансформированы как локальные/относительные только на одном сайте. –

ответ

1

Как раз сейчас это невозможно без разбора URL-адреса и вывода его. Нет стандартного, подобного ../ (вверх по папке), который позволит «подпрыгнуть» на одном уровне домена. Для другого JS-решения вы можете использовать более простой подход, но проверка того, можете ли вы подняться на один уровень или нет, может быть сложной (например, example.co.uk превратится в co.uk). Вот регулярное выражение подход, тем не менее:

var hostname = 'test.example.com'; //location.hostname 
 
var tld = hostname.replace(/^.*\.([^.]+\.[^.]+)$/,'$1'); 
 
document.write(tld);

Смежные вопросы