RELATEED CONSULTING
相关咨询
选择下列产品马上在线沟通
服务时间:24小时服务
你可能遇到了下面的问题
关闭右侧工具栏
伪静态文件详细解答http;ini和.htaccess的区别

  我们都知道搜索引擎对动态网站是不是那么的喜好的,因为一大串的参数不仅用户看着不美观,而且搜索引擎抓取起来也别动态网站的难度要大的多,所以就出现了http.ini伪静态和.htaccess伪静态文件。http.ini是配置windows主机服务器iis的配置伪静态文件,windows主机器的网站以搭建在虚拟主机上,当我们用习惯了apache下的.htaccess的时候,很难想象windows主机上怎么实现它的强大功能。实际上windows主机服务器上的虚拟主机可以用httpd.ini文件来充当.htaccess文件在Linux主机空间的作用,不过要令你失望的是,httpd.ini的功能完全没有.htaccess那么强大,规则上没有那么丰富,细节上也有很大的不同。我们来看一段简单的httpd.ini内容实现的功能,从这段代码开始:

[ISAPI_Rewrite]
RewriteRule /(.*).html /index.php?p=$1 [L]
上面这段小代码不难让你想象它的功能,即先开启重写功能,然后执行一条规则,将根目录下后缀为.html的网址内容和/index.php?p=后面的内容匹配。你可以用这个网址来访问这个真实的地址。关于httpd.ini的部分规则,将会在下面的案例中一一讲到。

域名定向

[ISAPI_Rewrite]
RewriteCond Host: ^$
RewriteRule (.*) [R,I,L]
上面这段代码实现了将重定向到。这种方法据说是有利有SEO的。
[ISAPI_Rewrite]是开启重写能力的意思,每个单词都对应了英文的原意。
RewriteCond提出条件,相当于IF。Host后面跟上域名,即条件内容,域名为情况下,执行下面的规则。^是开始标记,即域名以开始,$为结尾标记,即域名以结尾。整条语句的意思“重写条件 域名以u开头到com结束的情况下,往下执行”言外之意不符合则不执行。“”是转义字符,在httpd.ini中需要对这种index.php中间的点加以转义。
RewriteRule则是指执行的规则。(.*)即第一个要匹配的内容,也就是说你的用这个东西将要代替另外一样。“.”指任意字符,“*”指这个字符重复0或更多次,如果是“+”意思为重复1或更多次。那么“(.*)”的意思就是指任意字符而且该字符可以随意重复N次,其实就是任意内容了。后面则是将前面的(.*)代替什么了,用$1表示。也就是说如果我输入的是不带WWW的那么实际上服务器将用带WWW的这个网址。这样就实现了域名的重定向。再举一例,如果规则为RewriteRule /(.*).html [R,I,L]那么只会当你用访问时跳转为静态路径。实际上这种方法我们只用在域名跳转上,不用在单独网页跳转上,从而实现301重定向。

域名绑定

[ISAPI_Rewrite]
RewriteCond Host: ^$
RewriteRule ^(.*)$ /$1 [I]
RewriteCond Host: ^www.
RewriteRule //(.*)$ R,I]