Назад | Перейти на главную страницу

Nginx для перенаправления на конкретный PHP

Я хотел переписать URL-адрес, чтобы он указывал на определенный PHP. Вот поток:

Логин пользователя

https://admin.abc.com

После того, как они вошли в систему, система передаст URL-адрес для перенаправления

https://admin.abc.com/MX/Home

Что он здесь делает, так это то, что он фактически перенаправляет на main.php?url=Home, поэтому я ожидаю, что URL-адрес будет перезаписан на приведенный выше.

Физического пути для MX / Home не существует, но путь к MX существует. Этот main.php находится внутри папки MX, вот путь:

/var/www/html/MX/main.php

Поэтому после входа в систему он должен перенаправить на main.php и переписать URL-адрес следующим образом

https://admin.abc.com/MX/Home

но на самом деле это main.php, работающий на основе url параметр. Ниже представлена ​​моя конфигурация, но, похоже, не удалось достичь вышеуказанного. Добрый совет.

server {
    listen 80;

    root /var/www/html;
    index login.php;
    server_name  admin.abc.com;

    location / {
        try_files $uri $uri/ login.php?$args;
    }

    location ^/MX {
      rewrite ^/MX/^(.*)$ /MX/main.php?url=$1 last;
    }

    location ~ \.php$ {
          include snippets/fastcgi-php.conf;
          fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
    }
}

В location ^/MX { ... } блок размещается над location ~ \.php$ { ... } блок, который означает, что URI /MX/main.php не будет обрабатываться как файл PHP. Фактически, вы, вероятно, получите петлю перенаправления. Видеть этот документ для большего.

Либо поменяйте местами порядок location блоков или используйте расположение префикса вместо расположения регулярного выражения.

Например:

location /MX {
    rewrite ^/MX/?(.*)$ /MX/main.php?url=$1 last;
}

В указанном выше месте будут обрабатываться URI, начинающиеся с /MX, но не те, которые заканчиваются на .php. Кроме того, в вашем rewrite регулярное выражение.