我有一个非常特殊的用例,我使用 Wordpress 作为 CMS 后端(主要是在无头配置中),但我希望应用通常的 NGNIX/Wordpress 配置的某些 URL 除外。具体来说:
大多数对 NGINX 根目录的 url 请求应该从子目录提供静态 HTML 文件。我在虚拟主机文件的
server
块内的这个位置块中标识了这个:
location / {
root /var/www/html/node/website.com/_build;
index index.html;
try_files $uri $uri.html $uri/ /404/index.html;
}
但是所有 Wordpress 特定文件(即
/wp-*
URL 后面的文件)仍应由 Wordpress 提供服务。最终,一些特定的 URL(即 /shop
、/my-account
)也应该由 Wordpress 提供,而不是静态 html 文件,但我可以稍后再处理。我目前将 WP 特定位置标识为:
location ~* /wp- {
index index.php;
try_files $uri $uri/ /index.php?$query_string;
location ~ \.php$ {
root /var/www/html/php/website.com;
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
}
}
这部分有效。
website.com/wp-json
工作正常。大多数 URL 端点都是从 _build
子目录提供的,假设存在相关的 HTML 文件。 但是, website.com/wp-admin
和 website.com/wp-login.php
会自动下载相关的 PHP 文件而不是处理它们。
这告诉我将
index.php
文件传递到 php-fpm
时存在问题,但我不知道中断在哪里。 FWIW,我也在 location ~ \.php$
块中复制 server
块,位于 wp-
块之外。
有什么建议吗?
此外,如果有人对由 Wordpress 与
/shop
HTML 文件提供的特定“前端”URL(即/my-account
、_public
)的正确配置有建议,那将非常有帮助和很棒.
原来这是 Chrome 中的缓存问题。隐身窗口加载显示我的位置块已正确写入并且正常工作。将此问题留在这里,以防有人对我正在尝试做的事情有更好的建议,或者可以将此作为参考。