Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wordpress 从.htaccess隐藏wp admin和wp-login.php_Wordpress_.htaccess_Hide - Fatal编程技术网

Wordpress 从.htaccess隐藏wp admin和wp-login.php

Wordpress 从.htaccess隐藏wp admin和wp-login.php,wordpress,.htaccess,hide,Wordpress,.htaccess,Hide,我的.htaccess文件中有以下内容 RewriteRule ^(/)?access/?$ /wp-login.php [QSA,L] RewriteRule ^(/)?register/?$ /wplogin?action=register [QSA,L] RewriteRule ^wp-admin$ http://www.mywebsite.com/404.php [R=301,L] RewriteRule ^wp-login

我的.htaccess文件中有以下内容

        RewriteRule ^(/)?access/?$ /wp-login.php [QSA,L]
        RewriteRule ^(/)?register/?$ /wplogin?action=register [QSA,L]
        RewriteRule ^wp-admin$ http://www.mywebsite.com/404.php [R=301,L]
        RewriteRule ^wp-login\.php$ http://www.mywebsite.com/404.php [R=301,L]
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !^(.*)admin-ajax\.php
RewriteCond %{HTTP_REFERER} !^(.*)DOMAIN/wp-admin
RewriteCond %{HTTP_REFERER} !^(.*)DOMAIN/wp-login\.php
RewriteCond %{QUERY_STRING} !^KEY
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?KEY[R,L]
</IfModule>
问题是我实现了我想要的…用户没有看到可怕的wp-login.php。。。。。。。。。。。。在浏览器中,出于安全原因,我想隐藏wp admin

但是,下面的规则覆盖了上面的内容……一旦我删除最后两行代码中的注释,登录按钮就会转到404页面。我知道这是可能实现我想要的,因为ithemes用他们的插件实现了这一点,但因为它和我的主题存在兼容性问题,我不得不停止使用它,但我希望该功能能够在不阻止www.mywebsite.com/access和www.mywebsite.com/register工作的情况下继续隐藏wp-admin和wp-login.php


关于

尝试将这两条规则替换为:

RewriteCond %{THE_REQUEST} \ /+wp-(admin|login)
RewriteRule ^ /404.php [L,R=404]

如果匹配%{the_REQUEST}变量,则只匹配浏览器请求的内容,而不匹配内部重写的内容。

也许您应该在.htaccess文件中尝试此代码

        RewriteRule ^(/)?access/?$ /wp-login.php [QSA,L]
        RewriteRule ^(/)?register/?$ /wplogin?action=register [QSA,L]
        RewriteRule ^wp-admin$ http://www.mywebsite.com/404.php [R=301,L]
        RewriteRule ^wp-login\.php$ http://www.mywebsite.com/404.php [R=301,L]
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !^(.*)admin-ajax\.php
RewriteCond %{HTTP_REFERER} !^(.*)DOMAIN/wp-admin
RewriteCond %{HTTP_REFERER} !^(.*)DOMAIN/wp-login\.php
RewriteCond %{QUERY_STRING} !^KEY
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?KEY[R,L]
</IfModule>

你的方法起了一些作用,我仍然必须将代码中的wp-login.php更改为/access,这样用户就不会出现404错误。但我仍然有一个问题。。。当用户尝试注销我的网站时,他们会收到404错误,因为注销代码显示“我不知道如何让他们在没有.htaccess抛出404页面的情况下注销”。有人吗?我会很感激的。