Чтобы исключить дублирование страниц в WordPress — частенько всплывает простая с виду задача — как редирект с верхнего на нижний регистр.
Однако при детальном рассмотрении оказывается все не так уж и просто.
По правильному — редирект лучше всего настраивать на сервере, т.к. это снизит нагрузку на хостинг, однако тут вас ожидает сюрприз — т.к. в .htaccess по простому это не сделать, и нужны или километровые правила например указанные тут https://www.askapache.com/htaccess/rewrite-uppercase-lowercase/#Htaccess_Redirect_Uppercase_Lowercase или доступ к файлу конфигурации Apache httpd.conf что доступно только на серверах, а никак не на хостингах, да еще и требует чтоб Apache был собран с нужными модулями.
Если вам повезло и звезды сошлись, то сделать редирект с верхнего на нижний регистр вообще для любого движка (а не только для WordPress) можно так
RewriteEngine on RewriteBase / RewriteMap lowercase int:tolower RewriteCond $1 [A-Z] RewriteRule ^/?(.*)$ /${lowercase:$1} [R=301,L]
либо так
<IfModule mod_speling.c> CheckCaseOnly On CheckSpelling On </IfModule>
Если же жизнь боль — доступа к редактирования конфига нету, либо туда не хочется лезть чтоб ничего не сломать, либо WordPress работает под nginx, где файла конфига Apache нету в принципе, то есть очень быстрый и простой способ запилить такие редиректы.
Открываем файл functions.php активной темы, и вставляем в конец следующие строки
add_action('parse_request', 'redirectUppercase',0); function redirectUppercase() { if(preg_match('/[A-Z]|/', $_SERVER['REQUEST_URI'])) { wp_redirect( $current_url = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . '://'.$_SERVER['HTTP_HOST'].strtolower($_SERVER['REQUEST_URI']),301); exit(); } }
Вот и всё :). Способ менее эффективный, чем серверный редирект, но зато в 100500 раз более быстрый и ничего не сломает.
Как это работает.
Если в URL встречается хоть одна большая буква, то с помощью функции wp_redirect происходит 301 редирект на этот же адрес, но с нижний регистром.
Код для WordPress вызывает множественный редирект при заходе на главную страницу (другие не проверял — вставил код через FTP и зашёл на главную), будучи авторизованным администратором в последней на данный момент версии WordPress((((9
потому что в выражении ‘/[A-Z]|/’ надо | заменить на +