尝试从较旧的允许,拒绝,订购语法更改为新的语法以保护WordPress管理员部分,但我无法识别它的IP。

这是我的.htaccess文件包含在/wp-admin文件夹中的内容。

ErrorDocument 401 default
ErrorDocument 403 default

# Disallow access for everyone except these IPs
<RequireAny>
    Require ip 50.153.218.4
</RequireAny>

# Allow plugin access to admin-ajax.php around password protection
<Files admin-ajax.php>
    <RequireAll>
        Require all granted
    </RequireAll>
</Files>

这就是我在WordPress mod重写信息下的根目录下的.htaccess中拥有的内容。

# Protect WordPress
ErrorDocument 401 default
ErrorDocument 403 default

<Files wp-login.php>
    <RequireAny>
        Require ip 50.153.218.4
    </RequireAny>
</Files>

但是我一直收到403 Forbidden错误。 当我在IP下添加Require All Granted时,它可以正常工作,但是向每个用户开放。 看来apache只是无法正确读取我的ip? 有人知道我在做什么错吗?

#1楼 票数:5 已采纳

您的语法对我来说似乎很好。

我可以认为apache可能无法正确读取用户IP的唯一原因是,如果您位于代理或负载平衡器的后面。 如果是这种情况,则可以使用X-Forwarded-For代替ip 在PHP中,您可以通过比较$_SERVER['REMOTE_ADDR']$_SERVER['HTTP_X_FORWARDED_FOR']来确定是否在代理后面。

如果这不是问题,那么最好在ServerFault上找到答案。

我可以为您提供一些解决方法。 最简单的解决方案可能是使用几个WordPress 安全插件之一 ,该插件可让您通过IP地址限制对后端的访问。

另外,您可以在主题或插件中实施这种相同的身份验证逻辑:

add_action('init', function() {
    $allowed_ips = array('50.153.218.4');
    if(is_admin() || $GLOBALS['pagenow'] == 'wp-login.php') {
        if( !DOING_AJAX && !in_array($_SERVER['REMOTE_ADDR'], $allowed_ips) ) {
            wp_die('', 'Forbidden' array(
                'response' => 403
            ));
        }
    }
});

更新:从评论看来,其中涉及一个代理。 应该工作:

ErrorDocument 401 default
ErrorDocument 403 default

SetEnvIF X-Forwarded-For "50.153.218.4" AllowIP

# Disallow access for everyone except these IPs
<RequireAny>
    Require env AllowIP
</RequireAny>

# Allow plugin access to admin-ajax.php around password protection
<Files admin-ajax.php>
    <RequireAll>
        Require all granted
    </RequireAll>
</Files>

# Protect WordPress
ErrorDocument 401 default
ErrorDocument 403 default

SetEnvIF X-Forwarded-For "50.153.218.4" AllowIP

<Files wp-login.php>
    <RequireAny>
         Require env AllowIP
    </RequireAny>
</Files>

您还应该能够使用“允许,拒绝”语法使用类似的方法。

  ask by zen translate from so

未解决问题?本站智能推荐:

2回复

Apache 2.4 + FPM + Wordpress多站点:URL重写在管理员中不起作用

我刚刚将Wordpress多站点从Apache 2.4 Prefork + mod_php移到了具有Apache 2.4 Event + php-fpm的新服务器上。 该站点在前端运行良好,并且由于具有CGI而比以前快了很多,但是... Wordpress管理面板仅适用于主站点(和网络管理)。 第
5回复

在Wordpress上启用相当永久链接 - apache配置不起作用

可能这个错误有一个非常简单的解决方案,但我一直在寻找方法来解决这个问题,但仍然没有得到错误。 我想我尽我所能。 问题:当我在wordpress安装上启用非常永久链接时(因此,它使用/%postname%/),它不起作用。 除主页外,我在所有页面上都获得了404。 这个页面http
2回复

.htaccess重定向在Apache上的WordPress 3.5.1中不起作用

我正在尝试解决WordPress 3.5.1的规范问题 http://www.whatisanaddiction.com/index.php需要重定向到http://www.whatisanaddiction.com/,因此在搜索引擎方面,我不会遇到重复的内容问题。 我不太清楚需要在
1回复

htaccess重定向在Apache服务器上不起作用

我想将非www重定向到网站的www版本。 我已经重定向了许多站点,但从未遇到过此问题。 我在Apache / 2.4.27(Ubuntu)服务器上安装了典型的WP。 我在# BEGIN WordPress之前放置了以下代码 我也尝试了这个,但没有结果。 我所做的一切,我
1回复

.htaccess网址重写在GoDaddy共享服务器上不起作用,Apache 2.4.3-返回404错误

我已经创建了一个.htaccess文件。 在madewithlove的htaccess测试器( https://htaccess.mwl.be )上进行的测试表明,URL重写正确,但是实时测试返回404错误。 我要重写的网址: http://example.com/folder1/f
1回复

重定向不起作用?

所以我的问题是,当访问example.com/members时,我被重定向到www.example.commembers /(注意,这不是有效的网址),而不是members.example.com(仅当存在www时才能正常工作) )。 但是,此重定向似乎在有或没有以下htaccess文件时发生
2回复

WordPress的RewriteRule不起作用

这是我当前的.htaccess文件内容: 我想改变: 至: 我修改了脚本,如下所示,但它没有更改我的URL。 你能指导我吗? 任何解决该问题的方法都受到高度赞赏。 谢谢
1回复

WordPress:RewriteRule不起作用

我的.htaccess文件中有以下规则: 在Wordpress配置中,我有: 但是,当我尝试形象化页面的内容时,我得到了: 仅当我使用以下URL时它才有效: http : //www.kobsa.com.pe/sitio/ index.php / about-us /