Ну, я ломаю голову от этого. Я использую SEO дружественный URL в моем проекте php mysql, и все работает хорошо, пока не появятся акценты или -. Примером этого может быть слово «año» или «río», которое выдает мне сообщение об ошибке:
не обнаружена
Запрашиваемый URL / адрес и URL / адрес /
Conexion.php
$db = new PDO('mysql:host='.$db_host.';dbname='.$db_database, $db_user, $db_pass);$db->exec("set names utf8");
Моя база данных сортировки:
utf8_general_ci
URL-адрес для project.php выглядит следующим образом:
http://www.mywebsite.cl/año
project.php (Файл, который получает данные и выдает мне странные символы, такие как Ã ± o или / rÃo /)
<meta charset="utf-8" />
$result->execute(array($_GET['project']));
.Htaccess
AddDefaultCharset utf-8
RewriteRule ^([0-9a-zA-Z\-]+)/$ project.php?work=$1
Благодарю.
Интернационализированные доменные имена (IDN) позволяют использовать не-ASCII символы в URL. Это делается путем перевода строки, содержащей не-ASCII-символы, в интерпретацию ASCII, известную как Punycode и добавляя 4-символьную строку «xn--«, чтобы отличить ее от обычного ASCII.
Например, переход к следующему ИДИ разрешит сайт español.com (последние 3 символа обозначают специальный символ и его местоположение):
xn--espaol-zwa.com
Интернационализированные идентификаторы ресурсов (IRI) являются эквивалентной адаптацией URL-адресов (см. RFC 3987).
Насколько я понимаю, в URI действительно не должно быть «чужих» / юникодных символов, и что вы должны придерживаться символов ASCII.
http://tools.ietf.org/html/rfc3986#section-2
Самый тщательный способ решения этой проблемы — создание копии каждого URL-адреса на обоих URL-адресах. Например, example.com/úrl и example.com/url, где первый фактически перенаправляет пользователей на второй. Я думаю, что это, вероятно, должно быть сделано через htaccess или что-то подобное. А для целей SEO вы хотели бы использовать канонический, чтобы не допустить дублирования контента.
Конечно, это было моим пониманием несколько лет назад, и символы юникода становятся все более распространенными, поэтому все могло измениться.