dedecms网上上线之后,细心的站长就会发现在网站首页会多出来一个index.html的小尾巴,不仅影响用户体验,而且看着也不是那么舒服,网上关于dedecms系统删除index.html小尾巴的教程可以说太多了,多如牛毛,但是有些教程可不正确哦。
01首页出现index.html小尾巴的原因
dedecms系统出现index.html这个尾巴的原因是由于网站使用了生成静态网页的方式,也就是首页并不是动态的,是在网站后台-生成-更新主页HTML 这里选择了生成静态,如下图所示。
dedecms首页生成静态页面
此时在网站的根目录下面就会多出来一个index.html静态文件,当从前台访问网站时,实际访问的是host/index.php这个文件,由于生成了静态,此时再访问host/index.php时dedecms会自动为你跳转到index.html这个地址上。打开dedecms网站的根目录index.php文件,在最后位置有如下这样的代码。
header('HTTP/1.1 301 Moved Permanently');header('Location:index.html');
这段代码的意思是使用301自动跳转到index.html上面,不难理解,系统默认的首页文件是index.php,如果生成了静态文件,系统会使用310跳转到index.html这个文件上面。
如果web服务器(iis、Apache或nginx)在默认文档这里把index.php放在了第一的位置,这时网址的后面就会出现那个讨厌的index.html后缀,由于web服务器的“默认文档”是按照顺来查找文件,如下图中的默认顺序,先查找index.php在网站的根目录下是否存在,如果存在就访问,不存在就继续查找第二个,如果这里的默认文档没有在网站根目录里面找到,就返回403禁止访问错误。
iis默认文档
所有的web服务器都是这样的原理,按照谁靠前谁最重要的原则来处理。
02web服务器设置去除index.html小尾巴
根据前面的说明,相信各位已经知道原因了,去除小尾巴的正确方法就是直接将index.html放在web服务器默认文档第一的位置即可解决。
不论是iis、Apache或者是nginx服务器,操作原理都是一样的,这样设置好之后当从浏览器访问域名时,web服务器会直接查找首页文件index.html是否存在,因为我们在dedecms网站的后台使用了生成静态文件的方式,index.html文件当然存在啦,此时web服务器直接访问该文件,默认不显示index.html后缀。
那么有人就会不明白了,为什么将index.php放在第一的位置就会多出来一个后缀呢?原因是经过了dedecms程序的1次310跳转所致。
03不利于SEO优化的除去后缀方法
默认未设置时:当index.php放在第一的位置时,Web服务器首先查找首页文件index.php是否存在,我们的dedecms系统当然是存在的,所以web服务器返回的首页是host/index.php,前面已经提到dedecms的index.php文件里面写了代码来判断是否有生成静态页面并且做301跳转,此时并不是web服务器的跳转,而是dedecms程序使用301完成跳转,跳转后的地址是完整的文件路径:host/index.html,也就不能自动加上后缀了。
此时并不是真正的加上了后缀,而是访问网站根目录下的index.html这个文件,只是看起来和加了后缀是一样的显示方式。
当搜索引擎蜘蛛在抓取网站首页时,经过301重定向,于是蜘蛛会认为带有后缀的才是真正的地址,于是被收录,这也是为什么有些网站带有后缀被收录而且排名还不错的原因。
这种没有设置时的自动301跳转唯一的缺点就是影响用户体验,一看你的网站首页,还带着一个小尾巴,谁看着都不舒服,对于SEO优化来也稍有不便,因为host/和host/index.html是两个完全不一样的网址,在做外链、集权等方面都会形成浪费。解决方法是按照前面第二步修改,并且在首页模板里面的head标签中加上这一段代码来提供搜索引擎参考。
04错误的方法举例
前面的方法均是正确且可以很好地解决SEO优化和用户体验的问题,但是这里要告诉大家还有一种使用代码来实现跳转除去小尾巴的方法。具体的流程是在index.php文件里面添加判断代码,判断打开的网址是否带有后缀,如果有则使用301跳转显示不带后缀的顶级域名,详细代码就不贴出来了。
这个方法虽然达到的前台效果和前面正确方法是一样的,但是逻辑上有问题,这是一个死循环,带有后缀时前面说了有1次301跳转,再经过程序跳转一次,此时就有2次301,在SEO优化中,如果连续跳转次数过多会严重的影响蜘蛛对页面的索引,百度最多能识别5次连续跳转。
301次数过多,可能蜘蛛也晕头转向了吧,这就解释了为什么有的网站除去小尾巴之后首页快照却迟迟不更新的原因,或者更新之后很长一段时间排名都特别差,如果你使用这种代码跳转的方式来达到目的,而且你还是做SEO优化的,那么就要注意了,老板问你这是什么原因,不能再说是内容更新或页面质量的问题了,可能你需要找技术谈谈,这个是技术问题,逻辑上出了错误。
以上的是除去index.html尾巴的原因分析,SEO优化和解决的方法,如有遗漏欢迎补充。