里面用php位置Nginx的重写规则启用

问题描述 投票:0回答:1

我需要我的默认服务器配置内的PHP应用程序。

另外这款应用它以前分配上,我翻译成nginx的的.htaccess文件重写规则Apache服务器上。

我想配置它都像:

server {
        listen [::]:443;
        server_name _;

        root /var/www/html;
        index index.php index.html index.htm index.nginx-debian.html;

        location /admin {
                alias /var/www/sefoanco/html;
                index index.php index.html index.htm;

                try_files $uri $uri/ @admin;

                rewrite ^(/admin/.*)/login/ /login/controller.php break;
                rewrite ^(/admin/.*)/observacions/ /observacions/controller.php break;
                rewrite ^(/admin/.*)/usuari/ /usuari/controller.php break;
                rewrite ^(/admin/.*)/llistat/ /llistat/controller.php break;

                location ~ /admin/.+\.php$ {
                        include snippets/fastcgi-php.conf;

                        fastcgi_param SCRIPT_FILENAME $request_filename;    

                        fastcgi_split_path_info ^(.+\.php)(/.+)$;
                        fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
                        include fastcgi_params;
                }

            }

    location @admin {
        rewrite /admin/(.*)$ /admin/$1 last;
    }

}

如果我访问localhost/admin/login我得到一个403 Forbidden错误。

如果我的controller.php添加到索引文件,它与PHP的响应正确回答,所以我认为PHP是配置好。

所以我认为,我忘了什么东西来配置。

php nginx nginx-location nginx-config
1个回答
1
投票

最后的问题是,应用程序没有作出路径内工作。如果我看到了应用程序的配置,我看到以下内容:

$_DOCUMENT_ROOT = $_SERVER["DOCUMENT_ROOT"];

因此,很容易使其工作路径,但应用程序不与相对路径工作,以便使内部login一个电话后,将搜索的根路径内的身份验证方法。

因此需要重写应用程序的某些部分,才可以路径内工作。

无论如何,我得到的登录页面,工作得删除重写规则和索引PARAM加入controller.php。喜欢的东西应该工作:

server {
        listen [::]:443 ;
        server_name _;

        root /var/www/html;
        index index.php index.html index.htm index.nginx-debian.html controller.php;

        location /admin {
         try_files $uri $uri/ =404; 
    }

    location ~ \.php($|/) {
        include snippets/fastcgi-php.conf;

        fastcgi_param SCRIPT_FILENAME $request_filename;

        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
        include fastcgi_params;
    }
}   
© www.soinside.com 2019 - 2024. All rights reserved.