我遇到了一个问题,try_files 似乎没有将对不存在的文件的请求传递给最后一个指定的值,在我的例子中是 index.php。我正在使用 Wordpress 和我使用的 XML 站点地图生成器插件创建虚拟 XML 文件和由 Wordpress 处理的虚拟 robots.txt。不幸的是 try_files 似乎没有将这些文件的请求传递给 Wordpress。
这是我的服务器配置:
server {
## Web domain
server_name christiaanconover.com;
## Site root
root /var/www/christiaanconover.com;
## Index
index index.php index.htm;
## Common Wordpress configuration
include wp.conf;
## Include PHP configuration
include php.conf;
## Gzip Compression
include gzip.conf;
## Include W3TC configuration
include /var/www/w3tc/christiaanconover.com;
}
我在此服务器上运行多个单独的 Wordpress 站点,因此为了节省时间,我创建了一个文件 wp.conf,其中包含 Wordpress 的所有常用配置元素。这是 wp.conf 的内容:
location / {
## Prevent PHP files from being served as static assets, and fall back to index.php if file does not exist
try_files $uri $uri/ /index.php?$args;
## If a file exists, serve it directly
if (-f $request_filename) {
break;
}
## Wordpress Rewrite
if (!-e $request_filename) {
rewrite ^ /index.php last;
}
}
其他一切都运行良好,但 try_files 安排似乎并没有正确移交。有任何想法吗?