如何有一个Web服务器解决PHP文件的URL?

而不是让客户端parsingURLS,我想让我的networking服务器做到这一点。 所以理想情况下,我可以这样做:

<a href="http://www.long-domain-name.com/"> 

进入这个:

 <a href="http://domain/"> 

通过在我的/ etc / hosts文件,或DNS魔术,或类似的东西放入一个条目。 我正在运行nginx。 任何方式,我可以做到这一点?

谢谢!

你似乎混淆了“资格”与“决议”。

解决方法是将名称转换为IP地址。 客户绝对需要这样做。 避免这种情况的唯一方法是创build带有IP地址的URL,如下所示: http://127.0.0.2/ : http://127.0.0.2/但是这通常是一个糟糕的主意,在很多情况下,这种做法是行不通的。

资格正在扩展http://example/ to http://www.example.com/ 。 这在技术上也需要由客户完成。 但是,如果您正在尝试避免input长名称,则可以使用服务器端包含来缩短整个URL中的内容。 丑陋的黑客,但可行。

可能最合理的解决方法是,如果你绝对不能忍受input长URL的想法,那就是编写一个Makefile,通过sed运行你的源代码,将短版本转换为长版本。

像其他人说的,你不能改变DNSparsing。 它来的方式之前,你的networking服务器介入。 如果您只想为同一个域使用较短的URL,则可以使用Apache和mod_rewrite。

例如,我自动将所有mY“example.com”redirect到“www.example.com”。 您可以轻松接受“mydomain.com”的所有请求,并将其扩展为“www.my-domain-which-has-a-very-long-name.com”。

显然,你必须注册并设置“mydomain.com”和“my-domain-which-has-a-very-long-name.com”的DNSlogging。

无论如何,客户端仍然必须能够parsingDNS。

唯一的办法是如果你的代码或其他东西物理抓取页面本身,然后发送给客户端自己的。

这听起来像通常由反向代理完成的事情。

考虑这个设置:

规范的解决scheme是Apache的mod_proxy ,但我相信nginx也可以做到这一点。

如果www.long-domain-name.comurl位于从www.long-domain-name.com提供的页面中,那么您甚至不需要指定该域名。 所有的浏览器都会从它来自的同一站点获取一个不合格的链接。

即使用网站相对的url而不是绝对的,并replace:

 <a href="http://www.long-domain-name.com/">

有:

 <a href="/">

无论如何这样做是一个好主意,因为它可以很容易地将网站移动到不同的域名。 强烈推荐,几乎是必不可less的,如果你想有一个像“dev.long-domain-name.com”三个阶段部署 – >“testing.long-domain-name.com” – >“www.long-domain- name.com”

在任何web开发中,一个好的经验法则就是尽可能避免使用绝对的URL。