我使用的是Ubuntu 16.04,Nginx 1.10.3和PHP 7.0。示例PHP应用程序是CodeIgniter 3.1.5。
我正在尝试在我的网站www.example.com(works)的根目录下运行一个静态页面,其中包含多个其他CodeIgniter应用程序,每个应用程序都在子目录中运行,网址为www.example.com/client-a,www.example.com / client-b等。
我的root上的静态页面运行正常,但是当重定向到子目录中的应用程序时,没有样式表和脚本被加载导致404错误。路由工作。
后续应用程序的应用程序文件不会彼此存在。应用程序根目录存在于/var/www/example/public_html
中,而#34;嵌套"应用程序位于/var/www/client_a/public_html
,/var/www/client_b/public_html
等。
这是我的Nginx服务器块:
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name example.com www.example.com;
root /var/www/example/public_html;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location /client-a {
alias /var/www/client_a/public_html;
try_files $uri $uri/ @nested;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
}
}
location @nested {
rewrite /client_a/(.*)$ /client_a/index.php?/$1 last;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 30d;
}
location ~ /\.ht {
deny all;
}
}