我有一个用于开发的 VM,在这个 VM 中,我在内部 IP(所以没有主机名)上运行 nginx,因此我所能处理的只是位置,而不是单独的服务器。
服务器本身有root /var/www/html;
,我的一个位置,/site1
位于/var/www/html/site1
,有一个名为的子目录public
,每次访问时都需要使用该子目录。基本上,任何要访问 的内容都/site1/(.+)
需要加载/site1/public/$1
(PHP 文件除外)
我遇到的问题是,无论我尝试什么设置,我都无法让它不重定向到/var/www/html/site1/public/site1/
,它会按照/site1/
浏览器请求的当前位置进行操作。
我该如何解决这个问题?有没有办法重写而不给 Nginx 附加路径的机会?
我无法将服务器设置为root
,/var/www/html/site1/public
这将修复此问题(这是我们在实时环境中的设置),因为这个开发虚拟机上的其他位置将停止工作。
相关配置;
root /var/www/html;
location /site1 {
alias /public;
}
location ~* ^/site1/.*\.php$ {
include snippets/fastcgi-php.conf;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass unix:/run/php/php7.1-fpm.sock;
fastcgi_param SCRIPT_FILENAME /var/www/site1/application/entry.php;
}