Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
允许在URL中使用非英语(ASCII)字符进行搜索引擎优化?_Url_Utf 8_Internationalization - Fatal编程技术网

允许在URL中使用非英语(ASCII)字符进行搜索引擎优化?

允许在URL中使用非英语(ASCII)字符进行搜索引擎优化?,url,utf-8,internationalization,Url,Utf 8,Internationalization,我有很多UTF-8的内容,我想插入到搜索引擎优化的目的的网址。例如,发布我希望包含在URI中的标记(site.com/tags/id/TAG-NAME)。但是,标准只允许使用ASCII字符 URI中允许的字符 但没有保留的目的是什么 被称为无保留。其中包括 大小写字母, 小数位数、连字符、句点、, 下划线和波浪线 计划如下: 将字符串转换为 使用UTF-8的字节序列 编码 转换每一个 不是指向%HH的ASCII字母或数字, 其中HH是的十六进制值 字节 但是,这会转换易读(和SEO有价值)的

我有很多UTF-8的内容,我想插入到搜索引擎优化的目的的网址。例如,发布我希望包含在URI中的标记(
site.com/tags/id/TAG-NAME
)。但是,标准只允许使用ASCII字符

URI中允许的字符 但没有保留的目的是什么 被称为无保留。其中包括 大小写字母, 小数位数、连字符、句点、, 下划线和波浪线

计划如下:

  • 将字符串转换为 使用UTF-8的字节序列 编码
  • 转换每一个 不是指向%HH的ASCII字母或数字, 其中HH是的十六进制值 字节

但是,这会转换易读(和SEO有价值)的单词。所以,我想知道谷歌是否仍然足够聪明,能够处理包含编码数据的URL中的搜索,或者我是否应该尝试将这些非英语字符转换成半ASCII对应字符(这可能有助于使用基于拉丁语的语言)?

你知道所有内容都将使用哪种语言吗?都是拉丁语的吗


如果是这样,那么我建议建立一种查找表,在可能的情况下将UTF-8转换为ASCII(并且不冲突),类似于将Ź转换为Z之类的,当发生冲突或查找表中不存在字符时,它只使用%HH。

首先,搜索引擎真的不关心URL。它们帮助访问者:访问者链接到网站,搜索引擎关心这一点。URL很容易发垃圾邮件,如果他们在意的话,就会有发垃圾邮件的动机。没有哪个主要的搜索引擎希望这样。allinurl:只是谷歌帮助高级用户的一项功能,而不是将其纳入有机排名的因素。你从使用更自然的URL中获得的任何好处都可能是一个劣质搜索引擎为你的网站编制索引带来的公共关系的附带好处——有证据表明,随着负面公共关系的出现,这也可能是负面的

这是否意味着我应该避免 重写动态URL吗

那是 我们的建议,除非你方 重写仅限于删除 不必要的参数,否则您将 非常努力地清除所有 可能导致问题的参数。 如果将动态URL转换为 让它看起来是静态的,你应该是静态的 意识到我们可能无法 用英语正确解释信息 所有案例。如果你想服务一个 静态等同于您的站点,您 可能要考虑转变 通过提供 真正静态的替换。一个 例如,为以下对象生成文件: 所有路径,并使其可访问 在你网站的某个地方。然而,如果 您正在使用URL重写(而不是 而不是复制内容)到 从 动态网站,你可能会造成伤害 而不是好的。请随意服务 我们使用您的标准动态URL,我们 将自动查找参数 这是不必要的

我个人认为,除了获得更多的点击和帮助用户外,这一切都无关紧要。就Unicode而言,您不了解这是如何工作的:请求将发送到十六进制编码的Unicode目标,但如果渲染引擎希望将它们解码回视觉上有吸引力的内容,则必须知道如何处理这一点

一些浏览器总是对主机名部分进行编码,这使得这一点稍微复杂一些,因为

我想向您展示一个例子,以下是wget发出的请求:

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编码,然后将请求继续发送到url编码的目的地url解码域仅作为一种视觉便利而存在。

好吧,我借用了一个重音转换表(Źinto Z),您可以从中找到wordpress代码库。但我不知道你所说的
%HH
将每个非ASCII字母或数字的字节转换为%HH,其中HH是字节的十六进制值
如何将每个字节转换为十六进制?是否有任何真正的证据表明G、B或Y查看URL?谷歌
allinurl:
搜索选项;)不管怎样,普通的G用户永远不会使用它,是吗!这和搜索引擎优化有什么关系?最好的SEO就是创建一个易于阅读的网站,只要链接所在的页面(以及链接本身)都是有效的UTF8(带有适当的标题和元标记)。浏览器/蜘蛛会将链接编码为%HH本身吗?根据这篇文章,似乎跳过标记并使用
site.com/tags/id
可能会更好。不,这并不更好:完全一样
/$id
会让用户觉得有点困难。在发出请求之前,必须按照rfc3986对所有URL进行编码。事实上,你的浏览器能够对你给它的链接进行编码,这只是一个很好的例子。从技术上讲,如果服务器这样做了,你就打开了一个几乎不存在的市场,这个市场没有对unicode链接进行解码/编码的能力,wikipedia也会这样做(unicode表示是锚,链接是编码的)。根据规范,这是应该的方式。那么我该怎么办呢?当我创建一个包含UTF8字符串(如
)的链接时,我应该信任浏览器对URI进行编码吗?还是应该通过某种编码器功能运行它,这样浏览器就不会有URI?通过编码器运行它,浏览器将解码URL的路径和查询部分,以获得视觉吸引力,但无论如何,这几乎肯定对搜索引擎来说都无关紧要。我想他们还是通过编码来规范所有Unicode URL。@Evan我看不出你发布的Google站长信息如何得出这样的结论:Google不关心你URL中的内容,它所做的只是声明Google可以处理这些内容