我已经在服务器上设置了ubuntu,php5.6,nginx,我已经在我的网站配置下部署了几个项目。我需要在目录下部署的一个项目是在CodeIgniter中开发的,并且我配置了Nginx配置,如下所示:
location ~* .(ico|css|js|gif|jpe?g|png)(?[0-9]+)?$ {
expires max;
log_not_found off;
}
location / {
# Check if a file or directory index file exists, else route it to index.php.
try_files $uri $uri/ /index.php;
}
location ~* .php$ {
fastcgi_pass unix:/run/php/php5.6-fpm.sock;
include fastcgi.conf;
fastcgi_split_path_info ^(.+.php)(.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
location ~ /.ht {
deny all;
}
URL现在不说404,但它显示了在URL重写后我网站的主页。我该如何解决?
如果我正确理解了您的问题。
一种方法是在您的Web目录的根系上全球运行PHP。运行后,您可以指定每个位置将接受的文件。因此,如果您需要将PHP隔离到子目录,则可以更改目录的文件。
index index.html index.htm
带有子目录的示例nginx config:
server {
listen 80;
server_name mysite.com www.mysite.com;
root /path/to/your/website.com/;
index index.html index.htm
error_log log/error.log;
# set expiration of assets to MAX for caching
location ~* .(ico|css|js|gif|jpe?g|png)(?[0-9]+)?$ {
expires max;
log_not_found off;
}
# main codeigniter rewrite rule or sub-directory
location /codeigniter {
alias /path/to/your/website.com/codeigniter/;
try_files $uri $uri/ /index.php;
}
# php parsing
location ~ .php$ {
root /path/to/your/website.com/;
try_files $uri =404;
fastcgi_pass unix:/tmp/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_buffer_size 128k;
fastcgi_buffers 256 4k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
}
}
我不是CodeIgniter用户,因此我无法共享PHP的配置。但是,需要为子目录指定位置。此堆栈帖子将向您展示如何在此处执行此操作。
另一种方法是将PHP隔离到子目录。与上述类似,仅更改此行
# php parsing
location ~ /codeigniter/.+.php$
这篇文章有一个完整的示例。
实际上,我已经解决了问题。问题是要更改FastCGI_Param,并且效果很好。谢谢@edlee
location /6 {
alias /var/www/html/6/;
try_files $uri $uri/ /6/index.php;
}
location ~* .php$ {
fastcgi_pass unix:/run/php/php5.6-fpm.sock;
root /var/www/html/;
try_files $uri =404;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
include fastcgi_params;
fastcgi_buffer_size 128k;
fastcgi_buffers 256 4k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
}