如何去除访问dedecms织梦程序网站首页index.html的后缀情况
2016-08-06 · 知道合伙人互联网行家
去除访问dedecms织梦程序网站首页index.html的后缀方法有两种:
第一种:在服务器里面或者虚拟主机的后台将网站的默认首页设置为index.html。以iis服务器为例,下面是具体步骤:
1,打开iis 右击网站->弹出菜单选择 ”属性“如下图所示:
2.点击属性就->选择文档标签,如下图:
3.这里只要点击添加,写入要设置的文件名即可。
第二种:如果虚拟主机后台没有网站默认首页设置,那就要修改网站根目录的index.php文件。
打开index.php文件,将里面的全部内容替换为下面的代码:
<?php
if(!file_exists(dirname(__FILE__).'/data/common.inc.php'))
{
header('Location:install/index.php');
exit();
}
require_once (dirname(__FILE__) . "/include/common.inc.php");
require_once DEDEINC."/arc.partview.class.php";
$GLOBALS['_arclistEnv'] = 'index';
$row = $dsql->GetOne("Select * From `dede_homepageset`");
$row['templet'] = MfTemplet($row['templet']);
$pv = new PartView();
$pv->SetTemplet($cfg_basedir . $cfg_templets_dir . "/" . $row['templet']);
$pv->Display();
?>
替换完成后再通过域名访问网站测试,就会发现不会自动出现index.html后缀了。
要解决这个问题首先我得搞清楚这个问题是怎么引起的,其实这个问题的出现是因为根目录下面的index.php,我们截取index.php从第14行到38行代码
if(isset($_GET['upcache']) || !file_exists(‘index.html’))
{
require_once (dirname(__FILE__) . “/include/common.inc.php”);
require_once DEDEINC.“/arc.partview.class.php”;
$GLOBALS['_arclistEnv'] = 'index';
$row = $dsql->GetOne(“Select * From `dede_homepageset`”);
$row['templet'] = MfTemplet($row['templet']);
$pv = new PartView();
$pv->SetTemplet($cfg_basedir . $cfg_templets_dir . “/” . $row['templet']);
$row['showmod'] = isset($row['showmod'])? $row['showmod'] : 0;
if ($row['showmod'] == 1)
{
$pv->SaveToHtml(dirname(__FILE__)。‘/index.html’);
include(dirname(__FILE__)。‘/index.html’);
exit();
} else {
$pv->Display();
exit();
}
}
else
{
header(‘HTTP/1.1 301 Moved Permanently’);
header(‘Location:index.html’);
}
这里有一个判断,网站在不加upcache参数的情况下和网站根目录下不存在index.html那么他就直接跳转到index.html
这样知道问题根源了,那接下来我就给出解决办法,我们分两种情况
一、直接动态浏览
网站动态访问的情况下,程序会删除根目录下面的Index.html ,那么他会执行include(dirname(__FILE__)。‘/index.html’);这段代码,把首页引用而非跳转。
二、静态访问
关于这种情况,我们这里分两种。
1、IIS
打开IIS点击文档,里面将index.html置于index.php上面,这有什么作用呢?其实这样设置就是在网站同时有index.php和index.html的情况下,先访问index,html这样就不会出现跳转的情况
2、Apache
apache里面DirectoryIndex来控制文件检索优先级的
DirectoryIndex index.html index.php index.htm
和iis一样,我们将index.html往前放