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

时间:2015-02-09 01:04:10

标签: 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\.php$ http://www.mywebsite.com/404.php [R=301,L]

问题是我实现了我想要的......用户没有看到可怕的" wp-login.php ............"在浏览器中也出于安全考虑我想隐藏wp-admin。

但是,最底层的规则会覆盖顶部的内容......一旦我从最后两行代码中删除了注释,登录按钮就会转到404页面。我知道有可能实现我想要的东西因为ithemes用他们的插件做到了但是因为它有兼容性问题和我的主题我必须停止使用它但我希望该功能保持隐藏" wp-admin&# 34;和" wp-login.php"无需阻止www.mywebsite.com/access和www.mywebsite.com/register工作。

问候

2 个答案:

答案 0 :(得分:0)

尝试用以下内容替换这两条规则:

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

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

答案 1 :(得分:0)

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

<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>