汽车销售在哪些网站做推广,wordpress 懒人图库,服务器的做网站空间,企业网站优化策略原文链接#xff1a;http://www.benben.cc/blog/?p305 Apache中有着这样一个模块#xff0c;它默默无闻#xff0c;却是URL操作的瑞士军刀#xff01;有人这样评价它#xff1a;“尽管它的例子和文档数量可以以吨来计算#xff0c;但它仍然是巫术#xff0c;该死的巫术… 原文链接http://www.benben.cc/blog/?p305 Apache中有着这样一个模块它默默无闻却是URL操作的瑞士军刀有人这样评价它“尽管它的例子和文档数量可以以吨来计算但它仍然是巫术该死的巫术。” 它是一个基于一定规则的实时重写URL请求的引擎它的名字叫做“rewrite_module”它的源文件是“mod_rewrite.c”。 1、什么是mod_rewrite mod_rewrite是一个Apache模块该模块提供了一个基于规则的(使用正则表达式分析器的)实时重写URL请求的引擎从而使得服务器可以操纵客户端所请求的网址。mod_rewrite会通过事先已经定义的正则表达式规则对请求的网址进行匹配检查如果在地址中匹配到一个规则并满足相应的条件该规则就会被一个替代的字符串或者是动作所取代。 2、使用mod_rewrite的优点 使用mod_rewrite有两个最为显著的优点一是能够将丑陋的、复杂的网址转化为所谓的“友好的”或者是“干净的”网络地址。如此一来不仅仅提升了良好的用户体验而且还有利于搜索引擎对网址的抓取分析创建友好的网址也是一种搜索引擎优化(SEO)技术。 来看看下边的例子 通过我们的改造新网址更容易为人类所理解瞥一眼就可以很容易记忆诸如此类的网址不仅仅是看上去变的简单了对搜索引擎来说也是友好的可以使搜索引擎更好的从中提取语义除了这些简单的转换mod_rewrite还可以灵活的做很多的事情。当然所有这些功能和灵活性带来一个问题那就是复杂性因此不要指望一天之内就能看懂整个模块。 二是能够显著的提升网站的安全性网址1的方式是一种暴露式的脚本调用倘若程序编写时候过滤不周密就会导致调用失败甚至导致数据库的破坏。然而通过转换为更加友好的网址形式用户并不知道list.php的存在试图在这种情况下进行攻击在执行PHP之前就已经失败了。 3、如何启用mod_rewrite 在服务器上启用mod_rewrite模块必须修改全局配置文件(httpd.conf)如果你想确认你的主机是否支持该模块只需要打开httpd.conf文件找到 LoadModule rewrite_module modules/mod_rewrite.so如果不幸它被注释掉了(行首#为注释符号)那么删掉注释符号”#”重启服务器即可。 除此之外你还可以通过phpinfo()来测试mod_rewrite模块是否启用 ?php phpinfo(); ?在”Loaded Modules”中如果你能看到”mod_rewrite”的身影那么恭喜你你的服务器支持mod_rewrite模块。 4、哪个文件用来存储mod_rewrite规则 如果你的主机是Windows那么你需要将规则写进httpd.ini如果你的主机是Linux就需要用.htaccess来大展身手了。 5、mod_rewrite的典型应用有哪些 在许多学科除非你自己亲自动手尝试否则你是不可能学会的学习伪静态尤其是如此mod_rewrite有许多非常贴近实际应用的用途譬如如下三种典型的应用 a.子目录绑定 譬如a.com指向我们服务器的根目录\public_html\而特殊需要使得我们需要将b.com指向到服务器的子目录\public_html\b但是有时候我们的服务器并不支持子目录绑定这时候我们可以将b.com像a.com一样绑定至根目录然后通过htaccess进行URL重定向从而间接的实现子目录的绑定。 AddHandler application/x-httpd-php5s .php
RewriteEngine onRewriteCond %{HTTP_HOST} ^(www.)?b.com$
RewriteCond %{REQUEST_URI} !^/b/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /b/$1RewriteCond %{HTTP_HOST} ^(www.)?b.com$
RewriteRule ^(/)?$ b/default.html [L]通过这些规则就能够使得我们访问b.com的时候自动重定向到http://a.com/b/从而达到了我们间接实现子目录绑定的目的。 b.网址归一化 RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^(.*)$ http://example.com/$1 [R301,L]这是一条最经典的重写规则它能够将用户输入的所有开头为http://www.example.com/的网址硬性重定向到http://example.com/比如用户输入http://www.example.com/admin重写后网址就变成了http://example.com/admin。 c.图片防盗链 网站盗链会大量消耗被盗链网站的带宽而真正的点击率也许会很小严重损害了被盗链网站的利益。早期的盗链一般是一些比较小的网站盗取一些有实力的大网站的地址盗链的目标比较有针对性现如今一些大型的网站也已经开始把盗链的目光锁定在了整个互联网上窃取整个互联网上的其它机器的带宽。常见的盗链有以下几种图片盗链、音频盗链、视频盗链、文件盗链。 IfModule mod_rewrite.c
RewriteEngine On
RewriteBase /RewriteCond %{HTTP_REFERER} !^$ [NC]
RewriteCond %{HTTP_REFERER} !example.com [NC]
RewriteCond %{HTTP_REFERER} !google.com [NC]
RewriteCond %{HTTP_REFERER} !baidu.com [NC]RewriteRule .*\.(gif|jpg|png)$ http://www.example.com/nolinks.gif [R,NC,L]
/IfModule 规则中的网址我暂且称作“白名单”亦即只有白名单中的网址可以访问服务器上的资源。而规则最后则限定了防盗链所起作用的文件类型(gif|jpg|png)如果有其它网站试图访问服务器上被限定的文件类型就会被重定向到我们指定的警告图片。 当然这种方法并不是100%有效的但是不可否认它是禁止大多数盗链的最有效的方法。