如何在 nginx 中将 wordpress 网站设为子目录?

如何在 nginx 中将 wordpress 网站设为子目录?

我有一个位于 的 wordpress 网站/var/www/example.com/sites/public。我希望可以通过 访问此 wordpress 网站example.com/_api。我该怎么做?这是我目前的配置:

    server {
            listen 80;
            server_name example.com;
            root /var/www/example.com/site/public;
            location /_api/ {
                    index index.php;
                    try_files $uri $uri/ /index.php?$args;
            }
            location ~ \.php$ {
                    try_files $uri =404;
                    fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
                    fastcgi_index index.php;
                    fastcgi_intercept_errors on;
                    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                    include fastcgi_params;
            }
    }

如果我访问 ,我会得到 403 错误example.com,这是有道理的,因为没有 root 的索引文件。但是如果我转到example.com/_apiexample.com/_api/index.php,我会得到 404 错误。这个配置有什么问题?nginx 在这个配置中搜索未找到的哪个目录index.php

答案1

我只需要使用 proxy_pass 指令。像这样

location /_api/ {
  proxy_pass http://www.example.com/whatever
}

或者,你可以将 Wordpress 移动到 _api 目录,然后按如下方式配置

try_files $uri $uri/ /blog/index.php?$args;

可能有十几种不同的方法可以做到这一点,有人可能会想出更好的方法。

相关内容