Intereting Posts
Удалить «Комментарии закрыты» Уведомление из шаблона пользовательского типа отправки используя wp_rewrite, но сохраните исходный url в адресной строке Как перенаправить 301 в подкаталог, но сохранить доступ к wp-admin основного домена is_active_sidebar () не работает Как передать переменную в add_settings_section () обратный вызов? Невозможно создать таблицы с моим плагином Упрощенный URL-адрес страницы w / запрос var перенаправляет на URL-адрес префинированной страницы без запроса var Как изменить метку столбца в параметрах экрана для настраиваемого столбца? Добавить валидацию в категорию Event_Search.php Есть ли способ определить wp_blogs домены в wp-config? Как скрыть определенные ящики таксономии от пользователей в админе, добавить страницу сообщения? Значение cookie не может быть прочитано, пока я не войду в администратор WP блокируя раздел администратора (но все же используя admin-ajax.php) add_rewrite_rule – Страница Slug от "/ foo-bar /" до "/ foo / bar /" Как загрузить кусок mycred из плагина?

Арабская постоянная ссылка не найдена

Я работаю над арабским сайтом wordpress, и у меня есть проблема при использовании арабского названия для публикации. единственная страница-страница всегда перенаправляется на страницу 404, но с английскими permalinks она отлично работает

когда я попытался использовать the_permalink(); он возвращает:

 http://a3lamy.com/%d8%aa%d8%ac%d8%b1%d8%a8%d8%a9/ 

в то время как в панели управления wordpress admin при редактировании сообщения постоянная ссылка выглядит так:

 http://a3lamy.com/تجربة/ 

сопоставление сервера utf8_general_ciutf8_general_ci

когда я открываю таблицу wp-posts, я обнаружил, что пост-имя:

 %d8%aa%d8%ac%d8%b1%d8%a8%d8%a9 

и когда я меняю его вручную, он становится تجربة в базе данных, но все же постоянная ссылка перенаправляет на 404 не найденную страницу!

Мой web.config

 <?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <rewrite> <rules> <rule name="WordPress Rule" stopProcessing="true"> <match url=".*" /> <conditions> <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> </conditions> <action type="Rewrite" url="index.php" /> </rule> </rules> </rewrite> </system.webServer> </configuration> 

Любая помощь будет оценена.

Solutions Collecting From Web of "Арабская постоянная ссылка не найдена"

Это потому, что то, что вы хотите, невозможно, RFC говорит, что URL-адреса должны быть подмножеством символов ANSI, который охватывает подмножество латинских символов aZ, цифр и символов. Нет такой вещи, как URL-адрес Юникода, и она не имеет ничего общего с кодировкой базы данных, WordPress выполняет свою работу, и это ожидаемое поведение.

http://www.blooberry.com/indexdot/html/topics/urlencoding.htm

«… Только alphanumerics [0-9a-zA-Z], специальные символы« $ -_. +! * '(), «[Не включая кавычки] и зарезервированные символы, используемые для их зарезервированных целей, могут использовать некодированные URL-адреса ».

Однако не каждая страна говорит на английском языке, поэтому у нас есть RFC3986: http://www.faqs.org/rfcs/rfc3986.html

Википедия говорит:

Хотя URI ограничены подмножеством набора символов ASCII, IRI могут содержать символы из универсального набора символов (Unicode / ISO 10646), включая китайские или японские кандзи, корейские, кириллические символы и т. Д.

Синтаксис

IRI распространяется на URI с использованием универсального набора символов, тогда как URI ограничиваются ASCII с гораздо меньшим количеством символов. ИРИ могут быть представлены последовательностью октетов, но по определению определяется как последовательность символов, потому что ИРИ можно говорить или писать вручную. 2 Вот как работают URL-адреса с иностранными символами, отличными от ANSI. Поскольку URL-адреса поддерживают только подмножество ANSI, не-латинские символы должны быть закодированы.

Это не здорово, но исходная спецификация HTTP не может обрабатывать неанглийские символы, и это хак, который они использовали, чтобы обойти это. То же самое произойдет с кандзи, эможи и другими неанглийскими буквами

Эксперимент

Поэтому, если я создаю тестовую страницу с именем تجربة:

экран редактирования

Затем зайдите на страницу:

страница

Все выглядит правильно, но если я скопирую вставить URL-адрес, я получаю следующее:

 https://tomjn.com/%D8%AA%D8%AC%D8%B1%D8%A8%D8%A9/ 

Какой https://tomjn.com/ تجربة / закодирован как URL-адрес

% D8% AA% D8% AC% D8% B1% D8% A8% D8% A9 – это набор арабских символов, где каждый% кодированный октет представляет собой код символа в универсальном наборе символов

Это ожидаемое поведение и то, как он должен работать и реализован во всех браузерах и приложениях с поддержкой HTTP, которые поддерживают интернационализированные URL-адреса и домены

Причина the_permalink заключается в том, что он запускает URL-адрес через esc_url и urlencode , но если вы удалите это и esc_url его так же, как на странице, это не изменит ситуацию, поскольку браузер затем сделает это автоматически в конце пользователя. Если это не так, тогда у вас будет искаженный HTTP-запрос, который не сработает правильно.

Итак, откуда выходят 404?

Если вы заходите в базу данных и вручную تجربة на تجربة то WordPress никогда не сможет ее найти. Браузер изменит его на %d8%aa%d8%ac%d8%b1%d8%a8%d8%a9 , а WP будет искать это в базе данных. Он не найдет его, хотя он был изменен на تجربة