我在尝试让特定的 apache 重写规则块在 nginx 上工作时遇到了一点噩梦。
它用于阻止和保护 Wordpress 管理员。尝试过几个在线工具,但这些工具都没有帮助。任何帮助都很好。
这是原来的规则..
RewriteRule ^something-login/?$ /wp-login.php?fddf8778tbb [R,L]
RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in_.*$
RewriteCond %{SCRIPT_FILENAME} !^(.*)admin-ajax\.php
RewriteCond %{HTTP_REFERER} !^(.*)/wp-admin
RewriteCond %{HTTP_REFERER} !^(.*)/wp-login\.php
RewriteCond %{QUERY_STRING} !^fddf8778tbb
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 /not_found [R,L]
RewriteCond %{QUERY_STRING} ^loggedout=true
RewriteRule ^.*$ /wp-login.php?fddf8778tbb [R,L]
以下是我为 nginx 提供的内容
location / {
index index.php;
try_files $uri $uri/ /index.php?$args;
}
location ~ ^/(wp-admin|wp-login\.php) {
# IF ARG STRING NOT SET
if ($args != "fddf8778tbb") {
# DIE
return 301 https://$server_name/404;
}
}
location /something-login {
rewrite ^/something-login/?$ /wp-login.php?fddf8778tbb redirect;
}