什么是"URL中存在无效字符"?

有一些字元是不应用在URL之内的。一般而言,URL应只使用以下字元:

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~:/?#[]@!$&'()*+,;=

任何其他的字元都有可能会导致浏览器,网页应用或搜索引擎的问题。

为什么这个问题值得关注?

大部分搜索引擎都能够处理URL内的无效字符,不过也有例外。我们应该令搜索引擎对网站的抓取更容易以提升收录量。这是一个低优先级的问题,所以你可以自行决定应否修复它们。

如何修复

所有在没有在上面列出的字元也可以用作URL,但它们必须先经过 百分比编码 。这是一个用百分比符号加上两个十六进制数字来代表字元的方法。例如重音字符"`"将会被 %60代替,所以

http://www.example.com/grave`accent

这条URL会被转码为:

http://www.example.com/grave%60accent

同理,这条URL:

www.example.com/中文/北京[city]

应该被转码成

http://www.example.com/%E4%B8%AD%E6%96%87%/E5%8C%97%E4%BA%AC%5Bcity%5D

你可以用特别的函数来进行转码,或参考 这个页面 来知道常用字元的转码值。

反向字元

一个相关问题是"反向"字元的应用。这些字元是有效的URL字元,但应该使用在特别的技术场合。如正斜杠字符"/"是指一个子目录,而冒号":"则常用于分隔URL和端口号码。所以当你打算在反向函数以外的场合使用这些字符,你也应该为它们进行转码。

这些字符都属于反向字元:

:/#?&@%+~

虽然Dragon Metrics无法分辨你是否故意使用它们作其特别用途,你可以用Dragon Metrics的网站解析功能来找出这些带以上字元的URL是否存在问题。

Did this answer your question?