关于DiliCMS在nginx环境下伪静态问题
carl-G opened this issue · 6 comments
DiliCMS在nginx下不特殊配置的话,只会显示首页,跳转其他页面都会显示404,之后再nginx.conf中添加如下配置
server {
listen 80;
root /www/web/xxx/;
server_name xxx.com xxx.com;
index index.html index.php index.htm;
error_page 400 /errpage/400.html;
error_page 403 /errpage/403.html;
error_page 404 /errpage/404.html;
error_page 503 /errpage/503.html;
location ~ ^(/(application|system|services|shared|admin/backup|admin/config|admin/controllers|admin/core|amdin/errors|admin/hooks|admin/language))/ {
deny all;
}
location / {
if ($request_uri ~* index/?$)
{
rewrite ^/(.*)/index/?$ /$1 permanent;
}
if (!-d $request_filename)
{
rewrite ^/(.+)/$ /$1 permanent;
}
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php/$1 last;
break;
}
set $admin '';
if ($request_uri ~* ^/admin/) {
set $admin A;
}
if ($request_uri ~* ^/install/) {
set $admin B;
}
if (!-e $request_filename) {
set $admin "X${admin}";
}
if ($admin = XA) {
rewrite ^/admin/(.*)$ /admin/index.php?/$1 last;
break;
}
if ($admin = XB) {
rewrite ^/install/public/(.*)$ /install/public/index.php?/$1 last;
}
if ($admin = X) {
rewrite ^/(.*)$ /index.php?/$1 last;
break;
}
}
location ~ \.php($|/) {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME /www/web/xxx$fastcgi_script_name;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}
添加之后页面可以跳转,后台也一切正常,但是上传图片时出错,路径如下:
‘/admin/index.php/content’
应该是上面配置文件的原因,现在不知道怎么解决这个问题了,希望能够得到解答!
上传图片出错?是模型自带的上传图片功能出错,还是用的上传字段?
另外,可以看一下报错信息,前端的可打开chrome的开发者工具看网络请求,后端的话可以看一下nginx的error日志,然后贴出来,我们一起研究下 😃
应该不是代码的问题。在apache里一切正常的,上传到了nginx就出了问题,您有过在nginx方面的配置经验吗?
点击上传之后会报如下:
Error Number: 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1
UPDATE web_attachments
SET model
= '2', from
= 0, content
= '12' WHERE aid
in (0,)
Filename: /xxx/admin/controllers/content.php
Line Number: 358
我一直都是使用nginx的。
嗯,是个BUG,好像是传递附件的🆔没有正确被提交到服务器造成的。
PS:你用的那个版本的DiliCMS,因为我看最新版本的358行已经不是这个了。
谢谢啦,我这边问题解决了,我这边用的是被改过的2.4版本。原因是因为放在别人的服务器那里,他没有给我权限。。。所以无法提交服务器,我改变路径就发现可以,然后就发现原因了。现在已经调整好了。谢谢您的指点!
Good 👍