我有一个在 Nginx 上运行的 WordPress 网站。在我的配置中,我有一个如下位置块:
location / {
try_files $uri $uri/ /index.php?$args;
}
我想要的是有一个包含静态内容的特殊目录。如果 URL 与静态目录中的文件匹配,我希望提供该文件而不是 Wordpress 内容。
我不会提前知道文件的名称。
我尝试将我的位置块更改为
location / {
try_files /static/$uri /static/$uri/ $uri $uri/ /index.php?$args;
}
这基本上可以满足我的要求(只要是static
下的目录$document_root
),但它会重写访问者看到的 URL。如果可能的话,我想避免这种情况。例如,避免https://example.com/catalog.php
重定向到https://example.com/static/catalog.php
。我只希望 Nginx 在访问者不知情的情况下从静态提供内容。
我可能没有表达得特别清楚。
我的 WordPress 内容位于/srv/www/mysite/html
并且我的 Nginx 配置大致如下:
server {
root /srv/www/mysite/html;
location / {
try_files $uri $uri/ /index.php?$args;
}
}
我有另一个文件夹,/home/dave/static
里面有任意内容。假设它有一个名为的文件catalog.html
。如果访问者访问https://example.com/catalog.html
,我希望从中获取内容/home/dave/static/catalog.html
。如果没有匹配的静态文件,我希望回退到 WordPress 内容。
以下是我在此期间尝试过的其他方法:
server {
root /srv/www/mysite/html;
location / {
root /home/dave/static;
try_files $uri $uri/ @fallback;
}
location @fallback {
try_files $uri $uri/ /index.php?$args;
}
}
此配置不起作用。它似乎无法识别任何静态内容,仅提供 WordPress 内容。