WordPress重写敏感的URL和文件,并避免访问它们



我不知道这是否可能,或者我会在链接时遇到问题,但我目前正在为Wordpress wp-admin URL和wp-login重写von URL的问题而苦苦挣扎.php

我的目的是避免访问/wp-admin/和/wp-login.php期间,我将让 apache 能够使用另一个请求 url 通过。

希望你能提供帮助,也许可以对我说,如果这种尝试会奏效。

目前的回应是,如果我 [F] 重写新的 url/文件也会被阻止。

这有点疯狂,试图把很多事情都拿出来。

# BEGIN WordPress
# Die Anweisungen (Zeilen) zwischen `BEGIN WordPress` und `END WordPress` sind
# dynamisch generiert und sollten nur über WordPress-Filter geändert werden.
# Alle Änderungen an den Anweisungen zwischen diesen Markierungen werden überschrieben.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /wordpress/
# BEGIN
# Options +FollowSymLinks
# works %{REDIRECT_IS_BACKEND}
<If "%{REQUEST_URI} =~ m#^(.*?)/?backend/?(.*)$#">
SetEnv IS_BACKEND "1"
</If>
#works %{REDIRECT_IS_LOGIN}
<If "%{REQUEST_URI} =~ m#^(.*?)/login(.*)$#">
SetEnv IS_LOGIN "1"
</If>
RewriteCond %{ENV:IS_LOGIN} !^1$
RewriteCond %{SCRIPT_FILENAME} ^.*?/wp-login.php$
RewriteRule ^.* - [F,L]
#RewriteCond %{REQUEST_URI} ^(.*?)/backend/?(.*)
#RewriteRule ^(.*?)/?backend/?(.*)$ $1wp-admin$2 [NC,L,PT,E=IS_BACKEND:1]
#RewriteCond %{ENV:IS_BACKEND} 1
#RewriteCond %{REQUEST_URI} ^.*?/wp-admin/?.*$
#RewriteRule ^.* - [F,L]
# works
RewriteCond %{REQUEST_URI} ^(.*?)/login??(.*)$
RewriteRule ^(.*?/?)login(??.*)$ $1wp-login.php$2 [NC,L,PT,E=IS_LOGIN:1]
# END
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wordpress/index.php [L]
</IfModule>
# END WordPress

更新------------------------------ 所以,我找到了一个可行的解决方案:

# BEGIN
RewriteCond %{REQUEST_URI} ^.*?/?backend/?.*$
RewriteRule ^(.*?/?)backend(/?.*)$ $1wp-admin$2 [L,E=IS_BACKEND:1,END]
RewriteCond %{ENV:REDIRECT_IS_BACKEND} !^1$
RewriteCond %{REQUEST_URI} ^.*?/?wp-admin/?.*$
RewriteRule ^.* - [F,L]
RewriteCond %{REQUEST_URI} ^.*?/login??.*$
RewriteRule ^(.*?/?)login(??.*)$ $1wp-login.php$2 [L,E=IS_LOGIN:1]
RewriteCond %{ENV:REDIRECT_IS_LOGIN} !^1$
RewriteCond %{SCRIPT_FILENAME} ^.*?/wp-login.php$
RewriteRule ^.* - [F,L]
# END

但是现在我卡在 Cookie 路径上 - 因为它是定义的并且似乎没有钩子,也许我尝试编辑配置.php

经过一段时间的测试和重写,我找到了一个似乎可以正常工作的解决方案:

# BEGIN of our changes
<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_URI} ^.*?/?backend/?.*$
RewriteRule ^(.*?/?)backend(/?.*)$ $1wp-admin$2 [L,E=IS_BACKEND:1,END]
RewriteCond %{REQUEST_URI} ^/wordpress/wp-admin/load-styles.php$ [OR]
RewriteCond %{REQUEST_URI} ^/wordpress/wp-admin/load-scripts.php$ [OR]
RewriteCond %{REQUEST_URI} ^/wordpress/wp-admin/admin-ajax.php$
RewriteRule ^.* - [L,E=IS_BACKEND:1,END]
RewriteCond %{ENV:REDIRECT_IS_BACKEND} !^1$    
RewriteCond %{REQUEST_URI} ^.*?/?wp-admin/?.*$
RewriteRule ^.* - [F,L]
RewriteCond %{REQUEST_URI} ^.*?/login??.*$
RewriteRule ^(.*?/?)login(??.*)$ $1wp-login.php$2 [L,E=IS_LOGIN:1]
RewriteCond %{ENV:REDIRECT_IS_LOGIN} !^1$
RewriteCond %{SCRIPT_FILENAME} ^.*?/wp-login.php$
RewriteRule ^.* - [F,L]
</IfModule>
# END of our changes

有关将其集成到Wordpress中的完整说明: (德语(: https://www.sumedia-howto.de/wordpress/wordpress-urls-rewrite-zum-schutz-sensibler-dateien-und-pfade/

最新更新