Рейтинг:0

Правило перенаправления Nginx в подкаталог

флаг in

У меня есть старое PHP-приложение, работающее с Apache, сейчас мне нужно переключиться на использование Nginx.

правило перенаправления htaccess

php_value upload_max_filesize "5M"

AddType text/x-component .htc


RewriteEngine включен
RewriteBase /brand/kit/summer-icecream/lacne

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(/admin/)
RewriteCond %{REQUEST_URI} !(/setup/)
RewriteCond %{REQUEST_URI} !(/support/)
RewriteCond %{REQUEST_URI} !(/share/)
RewriteCond %{REQUEST_URI} !(/rss/)
RewriteCond %{REQUEST_URI} !(/output/)
RewriteCond %{REQUEST_URI} !(/upload/)
RewriteCond %{REQUEST_URI} !(/app_api/)
Правило перезаписи ^(.+)\.php$ share/admin/$1.php [L]

Правило перезаписи app_api/(.+)\.php$ share/app_api/$1.php [L]

Я пробовал несколько способов перенаправления, как показано ниже, но, похоже, он вообще не работает, он не передает файл PHP в PHP-FPM.

location ~ бренд/комплект/летнее-мороженое/lacne/(.+)\.php$ {
        если (!-e $request_filename){
           переписать ^/brand/kit/summer-icecream/lacne/(.+)\.php$ /brand/kit/summer-icecream/lacne/share/admin/$1.php редирект;
        }
    }

    местоположение ~ (.+)\.php$ {
       try_files $uri = 404;
       fastcgi_pass fastcgi_backend;
       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       включить fastcgi_params;
       fastcgi_read_timeout 600 с;
       fastcgi_connect_timeout 600 с;
       fastcgi_param REMOTE_ADDR $remote_addr;
       fastcgi_param HTTP_HOST $хост;
       включить /etc/nginx/fastcgi_config;
    }

Для тестирования URI запроса: http://127.0.0.1:8989/brand/kit/summer-icecream/lacne/login.php

djdomi avatar
флаг za
Ну, вы можете запускать nginx и apache параллельно, потому что это общая настройка — пусть старая вещь работает на apache и использует nginx для proxy_pass, разве это не вариант?
user2306811 avatar
флаг in
ну, таким образом, стек будет более сложным для дальнейшего обслуживания, если нет варианта с Nginx, мне придется вернуться с Apache
Gerard H. Pille avatar
флаг in
Возможно, nginx не прослушивает 127.0.0.1:8989. Трудно сказать, имея только выдержку из вашей конфигурации.
Ivan Shatsky avatar
флаг gr
Использование `if (!-e $request_filename) { ... }` является плохой практикой (обычно эта конструкция предлагается онлайн-преобразователями конфигурации apache-to-nginx). Вы можете попробовать [этот](https://www.getpagespeed.com/apache-to-nginx) конвертер (сделанный [Данилой Вершининым](https://serverfault.com/users/242885/danila-vershinin)).

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.