友好的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

上一篇: Friendly Url issue string with ñ or accents

下一篇: Solving UTF8 & french accents incompatibility