如何让网络服务器解析 php 文件中的 URL?

如何让网络服务器解析 php 文件中的 URL?

我不想让客户端解析 URL,而是让我的 Web 服务器来做这件事。因此,理想情况下,我可以将其转换为:

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

变成这样:

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

通过在我的 /etc/hosts 文件中放入条目,或使用 DNS magic,或类似的东西。我正在运行 nginx。有什么方法可以实现吗?

谢谢!

答案1

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

解析就是将名称转换为 IP 地址。客户端绝对需要执行此操作。避免这种情况的唯一方法是使用 IP 地址创建 URL,如下所示: http://127.0.0.2/但这通常不是一个好主意,而且在很多情况下都行不通。

资格正在扩展http://example/http://www.example.com/。从技术上讲,这也需要由客户端完成。但是,如果您只想避免输入长名称,则可以使用服务器端包括将较短的内容扩展为完整 URL。虽然不太好用,但可行。

如果您实在无法忍受输入长 URL 的想法,那么最合理的解决方法可能是编写一个 Makefile,通过 sed 运行源 HTML,将短版本转换为长版本。

答案2

就像其他人说的,您无法更改 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”。

答案3

无论如何,客户端仍然必须能够解析 DNS。

解决此问题的唯一方法是通过您的代码或其他程序物理抓取页面本身,然后将其作为自己的页面发送给客户端。

答案4

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

即使用相对于站点的 URL 而不是绝对 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”,则强烈推荐,几乎必不可少

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

相关内容