我想创建路由,如:
怎么做? 如果我去hxxp://127.0.0.1/allegro/scripts/test.php,我会看到一个空白页面。如果我去hxxp://127.0.0.1/ php脚本正常执行,我看到phpinfo()
我的nginx配置:
server {
listen 8000 default_server;
listen [::]:8000 default_server;
root /var/www/html;
index index.php index.html index.htm index.nginx-debian.html;
server_name localhost;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php7.0-fpm.sock;
}
location /allegro/ {
alias /var/www/allegro/;
autoindex on;
location ~ \.php$ {
fastcgi_split_path_info ^(.+?\.php)(/.*)?$;
fastcgi_pass unix:/run/php7.0-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
}
}
答案 0 :(得分:0)
您当前的配置存在多个问题。最重要的是,嵌套位置块处理URI /allegro/scripts/test.php
不,因为正则表达式位置块优先(除非使用^~
修饰符)。
location ^~ /allegro/ {
root /var/www;
# autoindex on;
try_files $uri $uri/ =404;
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/run/php7.0-fpm.sock;
include fastcgi_params;
}
}
^~
修饰符可确保此前缀位置优先于同一级别的正则表达式位置。有关详细信息,请参阅this document。
请注意,root
语句优先于适用的alias
语句(有关详细信息,请参阅this document)。
对于与路径信息不匹配的位置块,fastcgi_split_path_info
和fastcgi_index
指令是不必要的。
您需要确定include fastcgi_params
或include snippets/fastcgi-php.conf
是否更适合FastCGI参数来源。