希腊字符中的SEO Canonical URL

时间:2015-12-17 10:30:41

标签: php character-encoding seo

我有一个包含希腊字母的网址

http://www.mydomanain.com/gr/τιτλος-σελιδας/20/

我正在使用$_SERVER['REQUEST_URI']将值插入到我的页面头中的规范链接中,如此

<link rel="canonical" href="http://www.mydomanain.com<?php echo $_SERVER['REQUEST_URI']; ?>" />

问题是当我查看页面源时,URL显示的字符如...CE%B3%CE%B3%CE%B5%CE%BB...但点击它时,它显示的链接应该是

这是否会导致搜索引擎受到任何惩罚?

2 个答案:

答案 0 :(得分:0)

不,这是正确的行为。网址中的所有字符都可以使用其可读形式或编码形式存在于页面源中,该编码形式可以使用相关字符集的表格进行翻译。单击链接后,编码值将发送到服务器,服务器将其转换回人类可读形式。

通常编码可能导致网址出现问题的字符 - 空格是常见示例(%20),请参阅Ascii tables。 %xx语法指的是字符的等效HEX值。

搜索引擎会意识到这一点并正确解释字符。

将HTML发送到浏览器时,请确保服务器指定的字符集与HTML匹配。搜索引擎也会寻找这个来正确解码HTML。执行此操作的正确方法是通过HTTP响应标头。在PHP中,这些设置为header

header('Content-Type: text/html; charset=utf-8'); 
    // Change utf-8 to a different encoding if used

答案 1 :(得分:0)

网址只能包含有限的ASCII字符子集。你实际上不能使用&#34;希腊字符&#34;在URL中。此受限ASCII范围之外的所有字符 必须 percent-encoded

现在,浏览器做了两件事:

  1. 如果他们在HTML中遇到不在此规则范围内的网址,即包含未编码的非ASCII字符的网址,浏览器会在将请求发送到您的服务器之前为您编码。
  2. 对于某些(明确的)字符,浏览器将在地址栏中以解码的形式显示,以增强用户体验。
  3. 所以,是的,一切都很好。实际上,如果您的网址已经不存在,则应自行对网址进行百分比编码。