我有一个包含希腊字母的网址
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...
但点击它时,它显示的链接应该是
这是否会导致搜索引擎受到任何惩罚?
答案 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。
现在,浏览器做了两件事:
所以,是的,一切都很好。实际上,如果您的网址已经不存在,则应自行对网址进行百分比编码。