Nginx - 不同子目录中的多个WordPress站点 - / wp-admin重定向循环

时间:2017-04-18 00:03:42

标签: wordpress nginx

我正在尝试使用Nginx在三个不同的目录中托管三个单独的WordPress站点。经过数小时的研究,我完全无法找到允许我访问网站上/wp-admin和各个页面的配置。

这就是我现在所拥有的:

server {
        listen 80;
        listen [::]:80 ipv6only=on;

        root /var/www;
        server_name my.ip.add.ress;

        location /wp1 {
            root /var/www/wp1;
            index index.php index.html index.htm;
            try_files $uri $uri/ /wp1/index.php?q=$args;
        }

        location /wp2 {
            root /var/www/wp2;
            index index.php index.html index.htm;
            try_files $uri $uri/ /wp2/index.php?q=$args;
        }

        location /wp3 {
            root /var/www/wp3;
            index index.php index.html index.htm;
            try_files $uri $uri/ /wp3/index.php?q=$args;
        }

        if (!-e $request_filename) {
            rewrite ^/[_0-9a-zA-Z-]+(/wp-.*) $1 last;
            rewrite ^/[_0-9a-zA-Z-]+.*(/wp-admin/.*\.php)$ $1 last;
            rewrite ^/[_0-9a-zA-Z-]+(/.*\.php)$ $1 last;
        }   

        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
              root /usr/share/nginx/html;
        }

        location ~ \.php$ {

                try_files           $uri =404;

                fastcgi_split_path_info ^(.+\.php)(/.+)$;

                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                include fastcgi_params;

                fastcgi_cache moodle;
                fastcgi_cache_valid 200 60m;

                fastcgi_read_timeout 3600;
        }

        # Cache static content
        location ~* .(jpg|jpeg|png|gif|ico|css|js)$ {
                expires 365d;
        }
}

当我尝试访问/ wp-admin时,我的浏览器卡在重定向循环中。使用rewrite_log不会产生任何输出。

1 个答案:

答案 0 :(得分:0)

在你的问题中你有这个:

root /var/www;
...
location /wp1 {
    root /var/www/wp1;
    ...
}

/wp1/foo的路径名解析为/var/www/wp1/wp1/foo。请注意,您已在路径名中添加了第二个/wp1/术语。

location /wp1内,根不会改变。您不需要在每个位置内指定root,因为它仍然是root /var/www;,无论如何都会从外部块继承。

删除行:

root /var/www/wp1; 
root /var/www/wp2; 
root /var/www/wp3; 

有关详情,请参阅this document