$ remote_addr导致index.php不重写

时间:2014-05-15 00:17:26

标签: php wordpress nginx

我正在使用PHP-FPM和Nginx托管Wordpress博客。一个月前,如果$ document_root中存在一个名为maintenance.html的文件(并显示它),我修改了网页的Nginx配置文件以返回代码503。

以下是我目前编写的相关部分:

location / {
# if you're just using wordpress and don't want extra rewrites
# then replace the word @rewrites with /index.php
#   try_files $uri $uri/ @rewrites;
    try_files $uri $uri/ /index.php;
    index index.php;

    # site goes down for maintenance if maintenance.html exists in document_root
    if (-f $document_root/maintenance.html) {
        set $maint on;
    }

     # skip specific IP's (this is causing index.php to not rewrite for these IPs)
    if ($remote_addr ~ (1.2.3.4|ano.ther.ip.address)) {
        set $maint off;
    }

    if ($maint = on) {
        return 503;
    }

    location /maintenance {
    }
}

昨天,我注意到博客存在问题。经过一番调查,我发现index.php没有被重写。当时,我上面的部分写的有点不同。具体来说,如果$ document_root / maintenance.html存在且$ remote_addr =! 1.2.3.4(其中1.2.3.4是我的家庭IP),该站点实际上处于维护模式。但是,事实证明,对于来自不是1.2.3.4的IP的任何请求,index.php并没有被重写。通过将if语句修改为上面的描述,index.php被正确地重写为来自不是 1.2.3.4的任何IP的任何请求。

由于这些与PHP重写没有任何关系,我不知道为什么会这样,我希望别人可能知道原因。

0 个答案:

没有答案