Apache通过写rewrite规则,强迫目录网址后面自动加斜杠

Apache通过写rewrite规则,强迫目录网址后面自动加斜杠    在搜索引擎优化中,目录的权重一般要高于文件的权重。那么什么是网址目录,什么是网址文件呢?举个很简单的例子,你看了就会知道了,比如:http://www.live754.com/sale/,这是一个目录的网址,目录名称是sale,而http://www.live754.com/sale/view-6518.html,则是一个网页文件,文件名是view-6518.html。目录一般后面都会加斜杠,如果一个目录后面不加斜杠,比如http://www.live754.com/rent,则服务器对待的也是一个文件,而不是目录,只不过这个文件没有扩展名,文件名为rent,因此,搜索引擎也会认为这是一个文件,而不是一个目录,所以,http://www.live754.com/rent和http://www.live754.com/rent/其实在搜索引擎看来是两个截然不同的网址,但是在用户看来,他们都会认为是同一个页面的,因此经常会出现用户在浏览器敲网址时经常后面会不加斜杠。在windows系统,一般如果服务器如果识别目录有个名称是rent,但是根本没有文件名为rent时,他们会自动给目录加斜杠。但是,如果是linux系统,则不会,linux系统会把它作为文件处理,因此,如果根本不存在文件名是rent,而有目录名是rent时,在linux系统下打开http://www.live754.com/rent是无法显示的,因为他不会以目录形式处理,而是直接就打开rent文件,由于rent文件不存在,所以自然而然就打不开了。 以上说的是非伪目录的情况下,也就是上面所说的情形是服务器目录上真实存在sale,rent等目录的,而大多情况,很多网址都还是伪静态或者伪目录的,主要是为了对搜索引擎友好。在伪目录情况下,无论windows系统或者linux系统,如果网址是目录,但是后面不加斜杠的话,浏览器是不会自动给目录后面加斜杠的,为了解决这样一个问题,一般有两种方法,一种就是写rewrite规则,让他自动为目录后面没加斜杠的加斜杠。另一种是直接用php或者asp代码来实现301重定向。  第一种方法是实现:  这里是apache的伪静态规则 RewriteEngine On  RewriteCond %{REQUEST_URI} !^/(.*)/ RewriteRule ^(.*)$ $1/ [L,R=301]    先来解释一下:RewriteCond %{REQUEST_URI} !^/(.*)/  这句的意思就是说假如输入的网址是目录形式,如http://www.live754.com/online 但是后面没有加斜杠  RewriteRule ^(.*)$ $1/ [L,R=301]  这句的意思就是让这个没有加斜杠的目录后面自动加斜杠,并且告诉搜索引擎是301跳转 如跳转为http://www.live754.com/online/  第二种方法是实现:  第二种适合伪目录的,一般用php来实现跳转  比如http://www.live754.com/news/这是一个伪目录,而http://www.live754.com/news也是伪目录,只不过这2个网址对应2个不同的php程序,http://www.live754.com/news/这个对应 的是真正显示新闻内容的php程序,而http://www.live754.com/news这个则是对应那个要处理给目录加斜杠并且告诉搜索引擎这是301重定向,代码为:  <?php  Header( "HTTP/1.1 301 Moved Permanently" ); //告诉http头为301永久重定向 Header( "Location: "http://www.live754.com/news/" ); ?>  
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值