每次在后台设置网站信息后,点击提交会出现400错误

每次在后台设置网站信息后,点击提交会出现400错误

雪狐 2016-01-26 23:59:19

1、每次在后台设置网站信息后,点击提交会出现400错误,原因是每次在后台设置并提交后,会自动将网站根目录下的web.config文件给我删除掉。
 
导致整个网站都无法访问。只有重新把备份的这个文件复制进去,才能继续访问。
 
请问导致该问题的是什么原因呢?应该如何解决这个问题呢? 
 
服务器环境:IIS7.5+PHP 5.4,伪静态是关闭的。
web.config文件是rewrite规则和服务器的配置等信息,我服务器上每个站点的该文件都是一致的,rewrite规则是DZ论坛的,应该不会影响到CMSEASY,如下:




















































































































































2、点击更新Html,不论选择生成哪一项的html静态文件,都会直接跳转到生成完成的界面,而不会再后台提示“首页生成成功”。

    经多次测试发现,对于CMSeasy来讲,web.config是用来存储伪静态的规则文件,当启用伪静态时,CMSEASY会将web.config覆盖到根目录。伪静态规则如下:

















    但我的主机而言,web.config也是我服务器上网站环境的配置文件,每次设置时,涉及到需要重新更新缓存或者生成静态文件的设置会自动将默认的web.config覆盖掉我的服务器环境配置文件。所以会导致我直接打不开网站。
    建议:
    不宜使用暴力的覆盖文件或者删除文件的方式,而是建议使用文件之间插入或者删除CMSEASY静态化规则的方式。

    赞(0)参加讨论打赏

    针对问题1的其中一个解决方案:
    ----------------------------------------
    ""lib""admin""config_admin.php
    ----------------------------------------

    查找

    $web = "".""
    ";
    $web.= "".""
    ";
    $web.= "".""
    ";
    $web.= "".""
    ";
    $web.= "".""
    ";
    $web.= "".""
    ";
    $web.= "".""
    ";
    $web.= "".""
    ";
    $web.= "".""
    ";
    $web.= "
    ".""
    ";
    $web.= "".""
    ";
    $web.= "
    ".""
    ";
    $web.= "
    ".""
    ";
    $web.= "
    ".""
    ";
    $web.= "
    ".""
    ";
    $web.= "
    ".""
    ";

    替换为你自己伪静态规则+服务器配置规则文件。
     
    ----------------------------------------

    查找

    if(file_exists(ROOT."/web.config"))@unlink(ROOT."/web.config");

    替换或重写成默认的服务器配置文件。
     
    不过问题2,这个生成html时跳转到目标页的问题仍旧没法解决。

    赞(0)参加讨论打赏

    单独为一个iis站点开启伪静态,就不会有这个问题了

    赞(0)参加讨论打赏