代码之家  ›  专栏  ›  技术社区  ›  aze

无法让nginx在其他位置使用wordpress

  •  1
  • aze  · 技术社区  · 7 年前

    我有以下工作正常的nginx配置:

        #wordpress
        location /wordpress/ {
            index index.php;
            alias /usr/share/webapps/wordpress/;
            try_files $uri $uri/ wordpress/index.php?$args;
        }
    
        location ~ \.php$ {
            alias /usr/share/webapps/;
            include fastcgi.conf;
            include fastcgi_params;
            fastcgi_intercept_errors on;
            fastcgi_pass php;
            fastcgi_buffers 16 16k;
            fastcgi_buffer_size 32k;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        }
    
        location "^/wordpress/.*\.(js|css|png|jpg|jpeg|gif|ico)$" {
            expires max;
        }
    

        #wordpress
        location /hidden_wordpress/ {
            index index.php;
            alias /usr/share/webapps/wordpress/;
            try_files $uri $uri/ wordpress/index.php?$args;
        }
    
        location ~ \.php$ {
            alias /usr/share/webapps/;
            include fastcgi.conf;
            include fastcgi_params;
            fastcgi_intercept_errors on;
            fastcgi_pass php;
            fastcgi_buffers 16 16k;
            fastcgi_buffer_size 32k;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        }
    
        location "^/hidden_wordpress/.*\.(js|css|png|jpg|jpeg|gif|ico)$" {
            expires max;
        }
    

    但通过这种配置,我会不断得到这些错误日志:

    ==> nginx_error.log <==
    2018/12/18 20:35:38 [error] 30923#30923: *1 FastCGI sent in stderr: "Unable to open primary script: /usr/share/webapps//hidden_wordpress/index.php (No such file or directory)" while reading response header from upstream, client: 127.0.0.1, server: 127.0.0.1, request: "GET /hidden_wordpress/ HTTP/1.1", upstream: "fastcgi://unix:/run/php-fpm/php-fpm.sock:", host: ""
    

    我没有将wordpress内容移动到“隐藏的wordpress”文件夹,因为我不想更改它。

    似乎没有为php部分正确重写url。你知道如何做到这一点吗?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Richard Smith    7 年前

    你的 location ~ \.php$ 块无法正确解析以开头的URI /hidden_wordpress .

    使用嵌套的位置块,以便 alias 指令可以被继承。

    location ^~ /hidden_wordpress {
        index index.php;
        alias /usr/share/webapps/wordpress;
    
        if (!-e $request_filename) { rewrite ^ /hidden_wordpress/index.php last; }
    
        location ~ \.php$ {
            if (!-f $request_filename) { return 404; }
            ...
            fastcgi_param SCRIPT_FILENAME $request_filename;
            fastcgi_pass php;
        }
    
        location ~ \.(js|css|png|jpg|jpeg|gif|ico)$ {
            expires max;
        }
    }
    

    $request_filename try_files 别名 由于 this issue . 看见 this caution 关于使用 if