友好的Url问题字符串,带有ñ或重音
那么我正在用这个打破我的头。 我在我的php mysql项目中使用SEO友好的网址,并且一切正常,直到重音或ñ出现。 一个例子就是“año”或“río”这个词,它给了我一个错误信息:
未找到
请求的URL / a?o和URL / r?/
Conexion.php
$db = new PDO('mysql:host='.$db_host.';dbname='.$db_database, $db_user, $db_pass);$db->exec("set names utf8");
我的数据库整理是:
utf8_general_ci
project.php的url如下所示:
http://www.mywebsite.cl/año
project.php(获取数据并抛出奇怪字符的文件,如a?o或/ r?/)
<meta charset="utf-8" />
$result->execute(array($_GET['project']));
的.htaccess
AddDefaultCharset utf-8
RewriteRule ^([0-9a-zA-Z-]+)/$ project.php?work=$1
谢谢。
国际化域名(IDN)允许在URL中使用非ASCII字符。 这是通过将包含非ASCII字符的字符串转换为称为Punycode的ASCII解释并将4个字符的字符串“xn--”与正常的ASCII区分开。
例如,导航到以下IDN将解析为español.com(最后3个字符表示特殊字符及其位置):
xn--espaol-zwa.com
国际化资源标识符(IRI)等同于URL的改编(参见RFC 3987)。
我的理解是,URI真的不应该有“外来”/ unicode字符,并且你应该坚持使用ASCII字符。
http://tools.ietf.org/html/rfc3986#section-2
我看到人们处理这个问题的最彻底的方法是在两个URL处创建每个URL的副本。 例如example.com/url和example.com/url,其中前者实际上将用户重定向到后者。 我认为这可能需要通过htaccess或类似的东西来完成。 而对于搜索引擎优化的目的,你会想要使用规范,这样你就不会被标记为重复的内容。
当然,这是我几年前的理解,unicode字符变得越来越普遍,所以事情可能已经发生了变化。
链接地址: http://www.djcxy.com/p/67821.html