Предполагается, что у вас есть один сегмент пути, который может состоять из символов a-z
, A-Z
, 0-9
, _
(подчеркивание) и -
(дефис).
Попробуйте что-нибудь например, в верхней части вашего .htaccess
файла, перед существующим фронт-контроллером WordPress:
RewriteRule ^([\w-]+)$ /$1/ [R=302,L]
Эта директива соответствует только URL-пути, а не строке запроса. Независимо от того, какая строка запроса (например, utm_source=...
) присутствует в запросе (если таковая имеется), по умолчанию передается на целевой URL - вам ничего не нужно делать, чтобы включить это.
Только измените 302 (временный) перенаправить на 301 (постоянный) - если это является намерением - как только вы подтвердите, что он работает, хорошо.
ОБНОВЛЕНИЕ: Посмотрев на обновленный файл .htaccess
кажется, вы поместили директивы не в том месте. Как упоминалось выше, для этого нужно go "в верхней части вашего .htaccess
файла, перед существующим фронт-контроллером WordPress". Однако вы поставили его в самом конце, после фронт-контроллера WP. (Фронт-контроллер WP - это кодовый блок между # BEGIN WordPress
.. # END WordPress
маркерами комментариев.)
(На самом деле, я удивлен, что директива сделала бы что-нибудь, поместив ее в самый конец файла?!)
Если эту директиву немедленно поставить до , то достаточно строки # BEGIN WordPress
.
В стороне:
RewriteCond %{HTTPS} On
RewriteCond %{HTTP_USER_AGENT} ^(.+)$
RewriteCond %{SERVER_NAME} ^handylockselfstorage\.com$
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,QSA]
Что это должно делать? Похоже, что это должно быть перенаправление HTTP на HTTPS, однако, он ничего не делает по внешнему виду. Фактически, это очень близко к запуску перенаправления l oop, если бы вы использовали on
вместо On
в первом условии. Я ожидаю, что первое условие всегда будет не выполненным, поскольку HTTPS
- это либо on
, либо off
, а не On
(сравнение с учетом регистра).