解决百度编辑器与伪静态之间的冲突
优采云 发布时间: 2022-05-04 02:48解决百度编辑器与伪静态之间的冲突
近日,笔者将网站从Linux服务器迁移到了一台新的虚拟服务器中,系统为Windows Server2019,WEB服务器为IIS10,支持,因为网站是用php开发的,所以服务器也配置了支持php,网站代码中采用了百度编辑器UEditor作为文本编辑器,但在调试过程中发现,原来在Nginx中运行正常的UEditor在新环境下却无法上传图片及文件,没有任何错误提示,上传窗口内只有一片空白。
图1 发生错误的上传窗口
登录服务器,检查UEditor各种配置均正常,于是建立了一个临时站点,专门运行UEditor,测试上传功能,结果正常,说明代码及配置都没有问题。再进入网站打开一片空白的上传窗口,按F12,启动浏览器的调试模式发现上传图片的窗体文件域名/ueditor/dialogs/image/image.html报404错误,这个文件就是上传窗口文件,访问不到即显示为空白。直接从浏览器地址栏输入这个地址,依然是404错误,说明没有找到此文件,但经核实这个文件确实存在,而把域名换成刚才临时站点的地址,能正常打开,为什么存在的文件却访问不到,而新建立的站点还能正常找到呢?为什么在Linux的Nginx中正常,而Windows中的IIS10中就不正常了呢?只能说明这个网站的配置一定有问题,于是进入网站目录,打开了配置文件web.config,发现了以下一段配置:
这是为了安全,我为网站设置了伪静态即URL重写,也就是把*.php伪静态成了*.html,当客户端访问.html时,服务器实际上给返回对应的*.php的内容,那么问题就应该在这里!IIS10与Nginx的URL重写规则即伪静态规则不太相同,IIS10把.html地址重写为了.php但会忽略真实存在的.html文件,而原来Linux系统中的Nginx虽然也设置了URL重写,但Nginx会优先寻找.html文件,如果不存在.html文件再按重写规则访问.php文件。
问题找到了,应该怎么解决这个冲突呢?有两种方式:
一、直接改文件扩展名:
把ueditor/dialogs/image目录中的image.html直接改名为image.php,另外上传附件功能的ueditor/dialogs/attachment目录中的attachment.html直接改名为attachment.php,上传视频功能的ueditor/dialogs/video目录中的attachment.html直接改名为video.php,其他依次类推。
二、修改伪静态规则:
修改web.config文件,在原规则之前加入以下规则:
图2 修改web.config文件中的重写规则
即对ueditor目录包括其所有子目录.html页面的访问都不执行URL重写。
能训练孩子逻辑思维能力的在线成语辞典
微信小程序中搜索:易得优成语,或直接扫码进入。