Строка дружественного URL-адреса с акцентами ñ или

Ну, я ломаю голову от этого. Я использую 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

Благодарю.

0

Решение

Интернационализированные доменные имена (IDN) позволяют использовать не-ASCII символы в URL. Это делается путем перевода строки, содержащей не-ASCII-символы, в интерпретацию ASCII, известную как Punycode и добавляя 4-символьную строку «xn--«, чтобы отличить ее от обычного ASCII.

Например, переход к следующему ИДИ разрешит сайт español.com (последние 3 символа обозначают специальный символ и его местоположение):

xn--espaol-zwa.com

Интернационализированные идентификаторы ресурсов (IRI) являются эквивалентной адаптацией URL-адресов (см. RFC 3987).

1

Другие решения

Насколько я понимаю, в URI действительно не должно быть «чужих» / юникодных символов, и что вы должны придерживаться символов ASCII.

http://tools.ietf.org/html/rfc3986#section-2

Самый тщательный способ решения этой проблемы — создание копии каждого URL-адреса на обоих URL-адресах. Например, example.com/úrl и example.com/url, где первый фактически перенаправляет пользователей на второй. Я думаю, что это, вероятно, должно быть сделано через htaccess или что-то подобное. А для целей SEO вы хотели бы использовать канонический, чтобы не допустить дублирования контента.

Конечно, это было моим пониманием несколько лет назад, и символы юникода становятся все более распространенными, поэтому все могло измениться.

0

По вопросам рекламы [email protected]