AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 112035
In Process
Sandman
Sandman
Asked: 2010-02-12 11:26:49 +0800 CST2010-02-12 11:26:49 +0800 CST 2010-02-12 11:26:49 +0800 CST

IDN 和 HTTP_HOST

  • 772

因此,当我想将我的用户链接到我总是使用的特定页面时(在 PHP 中):

"http://" . $_SERVER["HTTP_HOST"] . "/page.php"

确保链接指向他们当前正在浏览的页面(而不是服务器别名之一)。

但是对于 IDN 名称,HTTP_HOST设置为xn--hemmabst-5za.net(例如) - 这当然可以,但看起来不太好。在这些情况下(在这种情况下 - )有没有办法HTTP_HOST设置正确的 IDN 名称hemmabäst.net?

在涉及 PHP 之前,我宁愿在 Apache 中执行此操作,因为否则我将不得不替换我对$_SERVER["HTTP_HOST"].

有任何想法吗?

php apache-2.2 httpd idn
  • 2 2 个回答
  • 847 Views

2 个回答

  • Voted
  1. tylerl
    2010-08-30T01:52:30+08:002010-08-30T01:52:30+08:00

    由于 DNS 名称中允许的字符集非常狭窄,因此实际的域名是包含连字符的名称。因此,您在 HTTP_HOST 中看到的实际上是正确的名称。转换为 unicode 是一种糖衣,仅当名称到达浏览器时才显示(甚至不是所有浏览器)。您想对 URL 进行的任何工作都应该使用原始 ASCII(“ punycode ”)版本,而不是 Unicode 版本,否则事情可能不会按您预期的方式进行。

    也就是说,如果您想将域名的 punycode 版本转换为 Unicode 以便在您的网页中显示(可能使用 PHP),那么请使用PHP IDN 函数。

    • 2
  2. Andy Shellam
    2010-02-12T11:40:59+08:002010-02-12T11:40:59+08:00

    不要引用我的话,但我不这么认为。

    我相信是客户端软件将域名从用户键入的 IDN 格式转换为 ASCII 格式以查询 DNS 服务器,因此当它通过线路发送到您的 Apache 服务器时,它已经被转换为 -称为“punycode”。

    我想你也许可以在你的脚本的头部(或者甚至在一个前置的头文件 - 见php.ini)中放置一些东西,这些东西可以转换xn--hemmabst-5za.net成你的脚本可以使用的原始格式(hemmabäst.net)(也许将它写回$_SERVER['HTTP_HOST']或写入一个全局变量) .

    甚至可能已经有一些东西可以为你做到这一点。

    • 1

相关问题

  • 如何强制我的网址始终以 www 开头?

  • 在 Linux Xen VPS 上优化 Apache 和 MySQL

  • mod_rewrite 不转发 GET 参数

  • 更改 PHP 的默认配置设置?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve