Nginx regravar regras

1

Poderia, por favor, ajudar-me a descobrir o seguinte redirecionamento usando o Nginx?

Quando um usuário digitar link ele poderá acessar este arquivo view.php (que está na raiz da web)

Todos os outros pedidos que chegam a http (s): // (www.) domainA.com devem ser redirecionados para o link

(Basicamente, nenhum redirecionamento deve acontecer apenas para este arquivo view.php)

Meu arquivo vhost atual do Nginx:

server {

    listen 80;
    server_name domainA.com www.domainA.com;

    root /var/www/public_html;

    if ($request_uri !~* (/view.php) ) {
       rewrite ^ https://learn.domainB.com permanent;
    }
    location /view\.php {
       fastcgi_pass 127.0.0.1:9000;
       fastcgi_index view.php;
       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       include fastcgi_params;
    }
}

Eu realmente aprecio suas entradas. Obrigado!

    
por YasithaB 15.08.2016 / 05:44

2 respostas

0

Eu preferiria essa configuração:

server {

    listen 80;
    server_name domainA.com www.domainA.com;

    root /var/www/public_html;

    location = /view.php {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index view.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location / {
       return 301 https://learn.domainB.com;
    }
}

Não há necessidade da instrução if , pois o nginx processa pedidos de localização do início ao fim e usa o primeiro bloco de localização correspondente.

Isso não ajuda com o problema de view.php ser baixado, há algo no arquivo que o impede de ser executado como Anubioz mencionou.

Eu também removi o escape do ponto na parte location = /view.php , já que essa não é uma correspondência de expressão regular e, portanto, a fuga não é necessária.

    
por 17.08.2016 / 00:59
0

Sua configuração deve funcionar bem, embora eu substitua reescrever pelo redirecionamento 301:

if ($request_uri !~* (^/view.php$) ) {
    return 301 https://learn.domainB.com;
}

Se você precisar passar algum parâmetro para view.php (como view.php?a=b ), sua configuração deverá ficar assim:

if ($request_uri !~* (^/view.php(\?.*)?$) ) {
    return 301 https://learn.domainB.com;
}
    
por 15.08.2016 / 05:53