.htaccess和href链接大写和小写符号

时间:2012-03-01 09:02:53

标签: php html .htaccess url-rewriting hyperlink

我正在编写一个使用小写和大写字符的网址缩写器。

我写了一个帮助我进行分析的中间脚本。这是在.htaccess:

RewriteCond %{HTTP_HOST}   q.(.{5})\.example.com
RewriteRule (.*)  http://www.example.com/this/r/%1

(网址改变了)

但不知何故,如果用户导航到 q.Fbbbc.example.com ,他最终会在 http://www.example.com/this/fbbbc (与小写F)

任何想法如何解决这个问题?我的一些客户已经遇到问题,我不认为这个规则会转换为小写..

作为一个相关问题:在前端,我使用基本<a href="http://q.Fbbbc.dim.io">click</a>让用户测试功能,但在Google Chrome中,悬停在此链接上会显示小写网址。 Chrome中的代码确实显示了大写字母F虽然......有什么想法吗?

2 个答案:

答案 0 :(得分:1)

我与我们的服务提供商进行了交谈,并且在第一个斜杠之前的所有内容都被视为小写。这样,当apple.com注册时,您无法注册APPLE.com。子域也是如此; WWW.example.com与www.example.com完全相同。经验教训!

答案 1 :(得分:1)

您可能需要阅读RFC 3986 - Uniform Resource Identifier (URI): Generic Syntax。具体来说是Section 3.2.2. - Host。您会看到以下声明:The host subcomponent is case-insensitive.

简而言之:'AA.ExAmPlE.Org' === 'aa.example.org'。小写是指示的标准化形式。如果大写主机名到达您的脚本(至少)取决于(a)浏览器,(b)中间代理,(c)http服务器。至少有两个你无法控制的组件。

如果您想使用区分大小写,则必须将子弹(Fbbbc)移动到路径名:http://q.example.org/Fbbbc