Nginx para redirecionar para PHP específico

1

Eu queria reescrever o caminho do URL para apontar para determinado PHP. Aqui está o fluxo:

Login do usuário

https://admin.abc.com

Após o login, o sistema passará o URL para ser redirecionado

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

O que ele faz aqui é que ele está realmente redirecionando para main.php?url=Home , então estou esperando que a URL reescreva para reescrever o acima.

O caminho físico para o MX / Home não existe, mas o caminho para o MX existe. Este main.php está dentro da pasta MX, aqui está o caminho:

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

Então, após o login, ele deve redirecionar para main.php e reescrever para o URL assim:

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

mas na verdade é main.php executando o baseado no parâmetro url . Abaixo está minha configuração, mas parece incapaz de alcançar o acima. Por favor, informe.

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;
    }
}
    
por MuthaFury 17.10.2018 / 09:55

1 resposta

0

O bloco location ^/MX { ... } é colocado acima do bloco location ~ \.php$ { ... } , o que significa que o URI /MX/main.php não será processado como um arquivo PHP. Na verdade, você provavelmente obterá um loop de redirecionamento. Consulte este documento para saber mais.

Troque a ordem dos blocos location ou use um local de prefixo em vez de um local de expressão regular.

Por exemplo:

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

O local acima processará URIs começando com /MX , mas não os que terminam com .php . Além disso, houve um erro de digitação na expressão regular rewrite .

    
por 17.10.2018 / 10:51