Nginx配置疑问:WordPress虚拟主机两个location块如何选择与合并?
关于WordPress的Nginx Location配置疑问解答
首先明确说:你绝对不能同时保留这两段location /的配置,Nginx不允许同一个server块下出现重复的相同匹配规则的location,直接启动服务会报错。
接下来解释两段配置的核心区别:
- 第一段
location / { try_files $uri $uri/ =404; }:这是Nginx处理纯静态站点的常规配置——先尝试访问请求的文件($uri),如果不存在就尝试访问对应的目录($uri/),如果两者都不存在,直接返回404错误。 - 第二段
location / { try_files $uri $uri/ /index.php?$args; }:这是WordPress这类PHP动态CMS必须的配置。因为WordPress使用**固定链接(Permalink)**时,所有自定义路径(比如/about、/category/posts)都不存在对应的物理文件/目录,这时候需要把请求转发到index.php,由WordPress的路由系统来解析并返回正确的页面内容。
所以结论很清晰:
- 完全不需要保留第一段配置,它会破坏WordPress的固定链接功能,导致所有非静态资源的页面返回404。
- 直接使用第二段配置即可,它已经覆盖了第一段的静态资源处理逻辑(优先返回存在的文件/目录),同时补充了WordPress必需的动态路由转发。
为了让配置更完整,你还需要确保server块中包含正确处理PHP请求的配置,比如:
location ~ \.php$ { fastcgi_pass unix:/run/php/php8.2-fpm.sock; # 请根据你的PHP版本和FPM配置调整路径 fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
这样整个Nginx配置就能完美适配WordPress的运行需求了。
内容的提问来源于stack exchange,提问作者Barbosa
相关产品推荐
相关产品推荐

