Перенаправить любой запрос, который не существует из определенной папки, в файл 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

0
задан 21 January 2018 в 20:33
1 ответ

Предположим, что index.php, который вы хотите использовать, находится в /путь/на/сайт/httpdocs/один/два/три/index.php, вам нужно использовать

try_files $uri $uri/ /one/two/three/index.php$is_args$args;

в блоке /один/два/три . Здесь нужно использовать путь, так как try_files использует каталог root в качестве префикса при поиске файлов.

Вы также пропустили закрытие } в конфигурации вопроса для этого блока расположения.

.
0
ответ дан 5 December 2019 в 06:45

Теги

Похожие вопросы