我在网站上运行的是 php5.6。我需要在该网站的一个文件夹中运行 php7.0。该文件夹是https://www.example.com/one/two/three。然后来自https://www.example.com/one/two/three/* 需要转到https://www.example.com/one/two/three/index.php。
这是我目前所拥有的。
server {
listen 80;
access_log /path/to/site/logs/access.log combined buffer=256k flush=600m;
error_log /path/to/site/logs/error.log warn;
root /path/to/site/httpdocs/;
index index.php index.html index.htm;
#-- Deny Ips
location / {
include denyips.conf;
try_files $uri $uri/ =404;
}
#-- Error Pages
error_page 404 /404.html;
error_page 500 502 503 504 /index.php;
location = /50x.html {
root /usr/local/nginx/html;
}
#-- Folder with php7.0
location ~ /one/two/three/ {
try_files $uri $uri/ index.php?$query_string;
location ~ \.php$ {
fastcgi_pass unix:/run/php/php7.2-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
#-- Main website
location ~ \.php$ {
include denyips.conf;
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
# With php5.6-fpm:
fastcgi_pass unix:/var/run/php/php5.6-fpm.sock;
fastcgi_param HTTPS on;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~* (\.ht|\.bak|\.off|\.config|\.sql|\.fla|\.psd|\.ini|\.log|\.sh|\.inc|\.swp|\.dist)$ {
deny all;
}
}
我现在已让 php7.0 适用于此文件夹中的所有文件https://www.example.com/one/two/three. 我需要该文件夹中的所有不良请求才能转到https://www.example.com/one/two/three/index.php
答案1
假设index.php
您要使用的位于/path/to/site/httpdocs/one/two/three/index.php
,您需要使用
try_files $uri $uri/ /one/two/three/index.php$is_args$args;
在location /one/two/three
块中。您需要在此处使用路径,因为在查找文件时try_files
使用目录作为前缀。root
}
您还缺少该位置块的问题配置中的结束。