Назад | Перейти на главную страницу

Wordpress закодированный (шестнадцатеричный) URL-адрес чувствительный к регистру проблема

Вчера у меня возникла проблема. Мой сайт на иврите. МОЙ сайт построен на Wordpress. Проблема связана только с URL-адресом экранированных закодированных сообщений. ЕСЛИ URL-адрес сообщения не закодирован в верхнем регистре, он работает, если в нижнем регистре, он возвращает 404. Я хочу, чтобы оба прошли без проблем. Я размещаю свой сайт на виртуальном хостинге godaddy. Есть ли возможность разрешить и прописные, и строчные буквы принимать и показывать одно и то же сообщение?

Например: http://domain.com/%d7%9e%d7%a6%d7%9c%d7%9e%d7%95%d7%aa/ (это то, что есть на моем сайте)

Google просканировал это как: http://domain.com/%D7%9E%D7%a6%D7%9C%D7%9E%D7%95%D7%AA/ (это вернуло 404)

Я думаю, что в mod_rewrite (htaccess) я должен сделать URL-адрес, передаваемый в wordpress, без учета регистра. Как я могу это сделать?

На основе вашего примера URL-адреса вы хотите, чтобы URL-адреса были экранированы строчными буквами. Если у вас есть контроль над своим сервером или виртуальным хостом, вы можете определить карту tolower и использовать ее в своих правилах перезаписи, как показано ниже:

RewriteEngine On
RewriteMap  tolower int:tolower
RewriteCond %{REQUEST_URI} [a-z]
RewriteRule (.*) ${tolower:$1} [R=301,L]

Вы также можете заполнить и использовать следующий код в yout htaccess:

Options +FollowSymLinks
RewriteEngine on
# If the URI does not contain any uppercase letters, skip the next 28 rules.
RewriteRule ![A-Z] - [S=28]
#
# Else convert the first instance of "A" to "a", "B" to "b", etc.
RewriteRule ([^A]*)A(.*) $1a$2
RewriteRule ([^B]*)B(.*) $1b$2
# <22 more rules>
RewriteRule ([^Y]*)Y(.*) $1y$2
RewriteRule ([^Z]*)Z(.*) $1z$2
#
# If any more uppercase characters remain, restart mod_rewrite from the top
RewriteRule [A-Z] - [PT,N]
# Otherwise do an external 301 redirect to give the client the new URL.
RewriteRule (.*) http://www.example.com/$1 [R=301,L]
#
# Skip to here if no uppercase letters in client-requested URL.
# <some other rules>

Если у вас нет контроля над сервером, вы также можете использовать плагин перенаправления wordpress для преобразования всех входящих URL-адресов в нижний регистр. (s / [A-Z] / \ l & / g)

http://wordpress.org/extend/plugins/permalowercase301/

Другое решение - изменить страницу с ошибкой 404, чтобы обнаруживать такие ссылки и перенаправлять их.

http://www.unfocus.com/2007/08/31/case-insensitive-permalinks-plugin-for-wordpress/