Как сделать правильный редирект для админ-панели WordPress в .htaccess?

Рейтинг: 0Ответов: 1Опубликовано: 20.01.2023

Код меняет URL админки WordPress с https://site.domain/wp-login.php на https://site.domain/kabinet

Как сделать правильный редирект, не используя site.domain в RewriteCond? Что-то же можно придумать через SERVER_NAME. При смене домена приходится править. Хотелось бы универсального решения, учитывая http и https.

<IfModule mod_rewrite.c>
RewriteRule ^kabinet/?$ /wp-login.php?query12345678ddd [R,L]
 
RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in_.*$
RewriteRule ^kabinet/?$ /wp-login.php?query12345678ddd&amp;redirect_to=/wp-admin/ [R,L]
RewriteRule ^kabinet/?$ /wp-admin/?query12345678ddd [R,L]
 
RewriteCond %{SCRIPT_FILENAME} !^(.*)admin-ajax\.php
RewriteCond %{HTTP_REFERER} !^(.*)site.domain/wp-admin
RewriteCond %{HTTP_REFERER} !^(.*)site.domain/wp-login\.php
RewriteCond %{HTTP_REFERER} !^(.*)site.domain/kabinet
RewriteCond %{QUERY_STRING} !^query12345678ddd
RewriteCond %{QUERY_STRING} !^action=logout
RewriteCond %{QUERY_STRING} !^action=rp
RewriteCond %{QUERY_STRING} !^action=postpass
RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in_.*$
RewriteRule ^.*wp-admin/?|^.*wp-login\.php /404 [R,L]
 
RewriteCond %{QUERY_STRING} ^loggedout=true
RewriteRule ^.*$ /wp-login.php?query12345678ddd [R,L]
</IfModule>

Ответы

▲ -1

Рекомендую взять серверную переменную SERVER_NAME для редиректа без site.domain в RewriteCond:

RewriteEngine on
RewriteCond %{SERVER_NAME} ^www\.example\.com$ [NC]
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]

Это помогает перенарпавить все запросы с www.example.com на example.com с кодом 301. Если нужно сделать редирект для http и https, то:

RewriteEngine on
RewriteCond %{SERVER_NAME} ^www\.example\.com$ [NC]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]
RewriteCond %{SERVER_NAME} ^www\.example\.com$ [NC]
RewriteCond %{HTTPS} on
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]

Этот код перенаправляет как http-запросы с www.example.com на http://example.com, так и https-запросы с www.example.com на https://example.com.