我有很多UTF-8内容,我想将其插入到URL中以用于搜索引擎优化目的。例如,我想要包含在URI(site.com/tags/id/TAG-NAME
)中的帖子标签。但是,标准只允许使用ASCII字符。
URI中允许的字符 但没有保留的目的 叫做毫无保留。这些包括 大写和小写字母, 十进制数字,连字符,句号, 下划线和波浪号。
但是,这会转换清晰易读(和有价值的搜索引擎优化)字into mumbo-jumbo。所以我想知道谷歌是否仍然足够智能处理包含编码数据的URL中的搜索 - 或者我是否应该尝试将这些非英语字符转换为半ASCII对应物(这可能有助于拉丁语言)? / p>
答案 0 :(得分:9)
首先,搜索引擎真的不关心URL。他们帮助访问者:访问者链接到网站,搜索引擎关心这一点。网址容易被垃圾邮件,如果他们关心会有垃圾邮件的诱因。没有主流搜索引擎想要这样。 allinurl:
仅仅是谷歌帮助高级用户的一项功能,而不是将其纳入有机排名的因素。使用更自然的网址所带来的任何好处都可能来自一个劣质搜索引擎索引你网站的公关的附加利益 - 并且有一些证据证明这可能是负面的负面公关也是。
这是否意味着我应该避免 根本不重写动态网址?
这是 我们的建议,除非你的 重写仅限于删除 不必要的参数,或者你是 非常勤奋地删除所有 可能导致问题的参数。 如果您将动态网址转换为 让它看起来像你应该的静态 意识到我们可能无法做到 正确地解释信息 所有情况。如果你想服务一个 静态等效于您的网站,您 可能想考虑改造 服务的基础内容 替换是真正的静态。一 例如,为...生成文件 所有路径,使他们可以访问 在您网站的某个地方。但是,如果 你正在使用URL重写(相反 而不是制作内容的副本) 从a生成静态URL 动态网站,你可能会伤害 而不是好。随意服务 我们是您的标准动态网址和我们 会自动找到参数 这是不必要的。
我个人认为,只需点击一下并帮助用户就可以了。就Unicode而言,你不明白它是如何工作的:请求转到十六进制编码的unicode目的地,但如果它希望将它们解码回视觉上吸引人的东西,渲染引擎必须知道如何处理它。 Google will render (aka decode) unicode (encoded) URL's properly
由于phishing attacks using ideographs that look the same总是对主机名部分进行编码,有些浏览器会使这一点稍微复杂一些。
我想向您展示一个示例,这是wget发出的http://hy.wikipedia.org/wiki/Գլխավոր_Էջ请求:
Hypertext Transfer Protocol
GET /wiki/%D4%B3%D5%AC%D5%AD%D5%A1%D5%BE%D5%B8%D6%80_%D4%B7%D5%BB HTTP/1.0\r\n
[Expert Info (Chat/Sequence): GET /wiki/%D4%B3%D5%AC%D5%AD%D5%A1%D5%BE%D5%B8%D6%80_%D4%B7%D5%BB HTTP/1.0\r\n]
[Message: GET /wiki/%D4%B3%D5%AC%D5%AD%D5%A1%D5%BE%D5%B8%D6%80_%D4%B7%D5%BB HTTP/1.0\r\n]
[Severity level: Chat]
[Group: Sequence]
Request Method: GET
Request URI: /wiki/%D4%B3%D5%AC%D5%AD%D5%A1%D5%BE%D5%B8%D6%80_%D4%B7%D5%BB
Request Version: HTTP/1.0
User-Agent: Wget/1.11.4\r\n
Accept: */*\r\n
Host: hy.wikipedia.org\r\n
Connection: Keep-Alive\r\n
\r\n
正如您所看到的,wget就像所有其他浏览器一样,只为您自己编码目标,然后继续请求到url编码的目标。 仅在视觉上方便存在网址解码域。
答案 1 :(得分:2)
你知道一切语言是什么吗?是拉丁的全部吗?
如果是这样,那么我建议构建一种查找表,在可能的情况下将UTF-8转换为ASCII(并且不会发生碰撞)这样的东西会将convert转换成Z等等,并且当发生碰撞或查找表中不存在该字符,然后它只使用%HH。