将某个文件夹中不存在的任何请求重定向到该文件夹​​的 index.php 文件

将某个文件夹中不存在的任何请求重定向到该文件夹​​的 index.php 文件

我在网站上运行的是 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

}您还缺少该位置块的问题配置中的结束。

相关内容