Назад | Перейти на главную страницу

Как заставить веб-сервер разрешать URL-адреса в файлах php?

Вместо того, чтобы клиент разрешал 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-адресов.