Вчера у меня возникла проблема. Мой сайт на иврите. МОЙ сайт построен на 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/