Вместо того, чтобы клиент разрешал URL-адреса, я хочу позволить моему веб-серверу делать это. В идеале я мог бы повернуть это:
<a href="http://www.long-domain-name.com/">
в это:
<a href="http://domain/">
Поместив запись в мой файл / etc / hosts, или волшебство DNS, или что-то подобное. Я использую nginx. Как я могу это сделать?
Спасибо!
Похоже, вы путаете «квалификацию» с «решимостью».
Разрешение преобразовывает имя в IP-адрес. Это абсолютно необходимо клиенту. Единственный способ избежать этого - создать URL-адреса с IP-адресом, например: http://127.0.0.2/
но это вообще плохая идея и во многих случаях не сработает.
Квалификация расширяется http: // пример /
к http://www.example.com/
. Технически это также должен делать заказчик. Однако, если все, что вы пытаетесь избежать, это вводить длинное имя, вы можете использовать сторона сервера включает чтобы превратить что-то более короткое в полный URL. Уродливый взлом, но выполнимый.
Вероятно, наиболее логичный обходной путь, если вы абсолютно не можете переносить мысль о вводе длинных URL-адресов, - это написать Makefile, который запускает ваш исходный HTML через sed для преобразования коротких версий в длинные версии.
Как говорили другие, вы не можете изменить разрешение DNS. Это происходит задолго до того, как ваш веб-сервер вообще подключился. Если вы просто хотите иметь более короткий URL для того же домена, вы можете использовать Apache и mod_rewrite.
например, я автоматически перенаправляю весь мой "example.com" на "www.example.com". Вы можете легко принять все запросы для «mydomain.com» и расширить его до «www.my-domain-which-has-a-very-long-name.com».
Очевидно, вам необходимо зарегистрироваться и установить записи DNS. обе для «mydomain.com» и «my-domain-which-has-a-very-long-name.com».
Клиент по-прежнему должен иметь возможность разрешать DNS, несмотря ни на что.
Единственный способ обойти это - если ваш код или что-то еще физически захватывает саму страницу, а затем отправляет ее клиенту как свою собственную.
Похоже на то, что обычно делает обратный прокси.
Рассмотрим эту установку:
Каноническое решение - Apache's mod_proxy, но я считаю, что nginx тоже может это сделать.
если этот URL-адрес www.long-domain-name.com находится на странице, обслуживаемой с www.long-domain-name.com, вам даже не нужно указывать домен. все браузеры будут получать неквалифицированную ссылку с того же сайта, с которого она пришла.
т.е. используйте относительный URL-адрес сайта, а не абсолютный, и замените:
<a href="http://www.long-domain-name.com/">
с участием:
<a href="/">
В любом случае это будет хорошей идеей, поскольку это позволяет легко переместить сайт на другое доменное имя. настоятельно рекомендуется, почти обязательно, если вы хотите иметь трехэтапное развертывание, например "dev.long-domain-name.com" -> "testing.long-domain-name.com" -> "www.long-domain- name.com "
Хорошее практическое правило в любой веб-разработке - по возможности избегать абсолютных URL-адресов.