我想在域名的子文件夹中安装一个 wordpress 博客。我使用 nginx。访问博客的 URL 应如下所示:example.com/blog
站点配置如下:
server {
listen 80;
listen [::]:80;
root /var/www/example.com/html;
index index.php index.html index.htm index.nginx-debian.html;
server_name example.com www.example.com;
location /blog {
alias /var/www/example.comblog/html;
index index.php;
try_files $uri $uri/ /blog/index.php?q=$uri&$args;
}
location ~ /blog/.+\.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}
wordpress 文件位于文件夹中
/var/www/example.comblog/html
。访问时example.com/blog
,浏览器显示 404 错误。我
/etc/php5/fpm/php.ini
改编了这个:cgi.fix_pathinfo=0
nginx 版本:nginx/1.6.2
/var/log/nginx/error.log
没有表现出任何有趣的东西
更新 1:
将错误日志设置为调试后,(除其他外)会出现以下几行。也许这会有所帮助:
open index "/var/www/example.comblog/html/index.php"
internal redirect: "/blog/index.php?"
rewrite phase: 1
test location: "/blog"
test location: ~ "/blog/.+\.php$"
using configuration "/blog/.+\.php$"
http script var: "/blog/index.php"
trying to use file: "/blog/index.php" "/var/www/example.com/html/staat/index.php"
内部重定向似乎不正确?最后一行应该是/var/www/example.comblog/html/staat/index.php
而不是/var/www/example.com/html/staat/index.php
。我怀疑这是 404 的原因。因为index.php
不存在/var/www/example.com/html/staat/index.php
。
更新 2:
好吧,似乎有一个长期存在与 try_files 一起使用别名的问题。
答案1
您没有遇到使用alias
with时长期存在的问题try_files
。
您根本没有alias
在适当的位置使用location
。因此,文档根目录是从上一级继承的。
您可以将alias
指令添加到location
块中,或者使其嵌套,location
如您链接到的答案中一样。