您的位置首页百科知识

apache服务器如何把网址中的index.html去掉

apache服务器如何把网址中的index.html去掉

的有关信息介绍如下:

apache服务器如何把网址中的index.html去掉

做SEO的时候发现搜索引擎竟然同时收录了www.baidu.com 和www.baidu.com/index.html两个网页(由于不能写自己的网址,此处采用百度网址仅为示范用),两个快照的图片展示和日期都不同,在百度站长社区咨询工作人员得到的答复是要对网站的URL进行统一。新手入门有说得不对的地方还请见谅,废话不多说下面就来说一下如何去除index.html的后缀。

建立.htaccess文件,不会创建的请点击下面的链接

2.htaccess文件怎么创建?

在.htaccesss输入

RewriteEngine on

RewriteCond %{REQUEST_URI} ^(/index\.html)$ [NC]

RewriteRule ^(.*) / [R=301,L]

RewriteCond %{REQUEST_URI} !^(/index\.html)$ [NC]

RewriteCond %{REQUEST_URI} (/index\.html)$ [NC]

RewriteRule (.+)/index\.html /$1/ [R=301,L]

RewriteEngine on 意思为打开重写引擎

首先我们进行首页的index.html的消除工作。

RewriteCond %{REQUEST_URI} ^(/index\.html)$ [NC]

RewriteRule ^(.*) / [R=301,L]

RewriteCond是写规则生效条件的语句。

%{REQUEST_URI}表示当前的目录,例如当前的网址是http://www.baidu.com/index.html,那么%{REQUEST_URI}表示的就是/index.html这一部分。

^(/index\.html)$[NC]表示的是在%{REQUEST_URI}中查找以开头/index\.html结尾的不区分大小写的部分,如果符合规则则执行RewriteRule ^(.*) / [R=301,L]。

RewriteRule ^(.*) / [R=301,L],此处进行的是URL的重写,^(.*) 表示的是当前的目录也就是/index.html这一部分,将其替换成“/”,也就是根目录的意思。那么当我们在输入http://www.baidu.com/index.html就会自动的把“/index.html”替换成“/”。

此处用到了正则表达式的支持,不懂正则的可以点击下面的链接查看。

7易语言-正则表达式入门

下面我们来解决栏目页的index.html

RewriteCond %{REQUEST_URI} !^(/index\.html)$ [NC]

RewriteCond %{REQUEST_URI} (/index\.html)$ [NC]

RewriteRule (.+)/index\.html /$1/ [R=301,L]

第一句的意思是判断当前的目录是否完全等于“/index\.html”(也就是网站首页),如果不是则继续执行。(上面已经解决了首页的index.html所以此处过滤掉)

第二句的意思是判断目录中是否存在“/index\.html”的字符,如果存在则执行。例如www.baidu.com/baike/2017/index.html就是符合规则的那么就会继续执行。

RewriteRule (.+)/index\.html /$1/ [R=301,L]的格式为:

RewriteRule 要替换的网址 替换成的网址 [R=301,L]

查找(.+)/index\.html的意思是“任何字符出现一次或多次”/inde.html的网址,也就是匹配“/baike/2017/index.html”这一部分。

$1指的是(.+),/$1/的意思就是将/baike/2017/index.html替换为/baike/2017/。如此一来栏目页的index.html就被301到目录下了。