我有 2 个版本的作品集网站,分别对应 2 种语言。我将它们放在同一个根目录中的两个目录中。
/root/
|----vi/
|----en/
|----index.php
然后我按如下方式配置 nginx:
server {
listen 8080;
server_name 192.168.0.117;
access_log /u01/projects/company/log/access.log main;
error_log /u01/projects/company/log/error.log;
set $rootLocation /u01/projects/company/;
root $rootLocation;
index index.php;
charset utf-8;
client_max_body_size 100m;
location ~* /(vi|en)/admin(/|/.*\.php)$ {
try_files $uri $uri/;
gzip on;
index index.php;
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $rootLocation$fastcgi_script_name;
}
include common.conf;#some fastcgi config
}
看看location
,我admin/
为每个版本都设置了目录(并直接在此处运行 php)。但是当我访问 时192.168.0.117/en/admin/
,浏览器总是重定向到192.168.0.117/en/index.php
。这个配置有什么问题?如何修复?
答案1
问题在于:
try_files $uri $uri/;
通过这样做,您明确告诉它重定向到index.php
。尾随的/
意思try_files
是尝试指令的值index
。
在 PHP-FPM 中location
,应改为:
try_files $uri =404;