启用php的位置内Nginx重写规则
我需要在默认服务器配置中有一个php应用程序 此外,该应用程序以前是在apache服务器上分配的,在我翻译为nginx的启用php的位置内Nginx重写规则,php,nginx,nginx-location,nginx-config,Php,Nginx,Nginx Location,Nginx Config,我需要在默认服务器配置中有一个php应用程序 此外,该应用程序以前是在apache服务器上分配的,在我翻译为nginx的.htaccess文件上有重写规则 我正试图这样配置它: server { listen [::]:443; server_name _; root /var/www/html; index index.php index.html index.htm index.nginx-debian.html;
.htaccess
文件上有重写规则
我正试图这样配置它:
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禁止的错误
如果我将controller.php
添加到索引文件中,它会正确响应php响应,因此我认为php配置良好
所以我想我忘记了一些需要配置的东西 最后,问题是应用程序不能在路径内工作。如果我看到应用程序配置,我会看到以下内容:
$\u DOCUMENT\u ROOT=$\u SERVER[“DOCUMENT\u ROOT”];
因此,很容易使其在路径上工作,但应用程序不使用相对路径,因此在登录
中进行调用后,将在根路径中搜索auth方法
因此,需要重写应用程序的某些部分,然后才能在路径中工作
无论如何,我只需删除重写规则并在索引参数上添加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;
}
}
我认为
try\u文件
在这里乱糟糟的-不用它试试。重写规则似乎有些奇怪——我会像rewrite^/admin/login/login/controller.php那样编写它
@IVOGELOV更改后,我得到一个500内部服务器错误
,nginx错误日志显示:*7“别名”不能在URI被重写的位置“/admin”中使用,客户端
好,然后离开try_文件
并将重写规则移动到@admin
部分现在@admin部分是位置@admin{rewrite/admin/(.*)$/admin/$1 last;rewrite^/admin/login//login/controller.php break;[…]}
并且不使用try_文件
但返回403禁止。在错误日志中:禁止使用/var/www/sefoanco/html/login/”的目录索引
向索引添加controller.php
有什么问题?