欢迎来到元素模板ys720.com,本站提供专业的织梦模板PBOOTCMS模板网站模板网站修改/网站仿站
当前位置:主页 > 程序教程 > 其他教程 >
其他教程

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

(元素模板) / 2017-09-03 10:43
在使用apache服务器的时候,发现打开网址会自动加上index.html

虽然这个不算是问题,但有的人就是不喜欢,那如何弄呢?
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]
2.上传FTP,再把名称改为.htaccesss即可

以下是解释说明,需要了解的朋友可以看下
 

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到目录下了。


Copyright @ 2013-2021 元素模板 www.ys720.com All Rights Reserved. 版权所有 元素模板 www.ys720.com