虽然这个不算是问题,但有的人就是不喜欢,那如何弄呢?
1.新建一个txt在里面输入以下代码:
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”替换成“/”。
此处用到了正则表达式的支持,不懂正则的可以点击下面的链接查看。
下面我们来解决栏目页的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到目录下了。