【问题标题】:Cannot get nginx to work with wordpress on a different location无法让 nginx 在其他位置使用 wordpress
【发布时间】:2019-02-27 00:45:30
【问题描述】:

我有以下正常工作的 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;
    }

我正在尝试将 url 位置更改为“hidden_​​wordpress”,因此我尝试了这个:

    #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 内容移动到“hidden_​​wordpress”文件夹,因为我不想更改它。

似乎没有为 php 部分正确重写 url。知道如何实现这一目标吗?

【问题讨论】:

    标签: wordpress nginx


    【解决方案1】:

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

    使用嵌套的位置块,以便可以继承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 获取别名文件的正确路径。由于this issue,请避免try_filesalias。关于if的使用见this caution

    【讨论】:

    • 非常感谢您非常详细的回答,我只是在最后一个位置条目中添加了一个 ~ 以使其工作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 2017-03-02
    • 2015-11-25
    • 1970-01-01
    • 2014-04-07
    • 1970-01-01
    相关资源
    最近更新 更多