Apache重写的由来:Rewirte主要的功能就是实现URL的跳转和隐藏真实地址,基于Perl语言的正则表达式规范。平时帮助我们实现拟静态,拟目录,域名跳转,防止盗链等。通常存在主服务器端配置文件配置和目录级别的文件配置。
在这我们并不讨论主服务器端的配置,因为往往我们对它没有操作权限。这时,最好的方法是使用目录级别的文件配置方法(分而治之)。
.htacess文件(分布式配置文件),它提供了针对目录改变的配置方法,即在一个特定的文档目录中放置一个包含一个或多个指令的文件,以作用于此目录及其所有子目录。简单来说,该文件是Apache的一个外部配置文件,负责相关目录下的网页配置。
其实,并不是说非要是.htacess这个名称,在主配置文件中AccessFileName .xxx ,便是以.xxx作为该重写文件。
在主配置文件中开启重写机制,不多说,自己问度娘去,哦,对了,开启了重写模块,还得记得更改Allowoverride(确定允许存在于重写的指令集类型,通常为ALL)。
好了,扯完这些之后,接下来就该进入Apache重写规则了: 讲的很细,有兴趣的朋友可以看看。
现在我们来谈谈开启重写的弊端:
避免使用.htaccess文件有两个主要原因。
首先是性能。如果AllowOverride启用了.htaccess文件,则Apache需要在每个目录中查找.htaccess文件,因此,无论是否真正用到,启用.htaccess都会导致性能的下降。另外,对每一个请求,都需要读取一次.htaccess文件。
还有,Apache必须在所有上级的目录中查找.htaccess文件,以使所有有效的指令都起作用。
其次是安全。这样会允许用户自己修改服务器的配置,这可能会导致某些意想不到的修改,所以请认真考虑是否应当给予用户这样的特权。但是,如果给予用户较少的特权而不能满足其需要,则会带来额外的技术支持请求,所以,必须明确地告诉用户已经给予他们的权限,说明AllowOverride设置的值,并引导他们参阅相应的说明,以免日后生出许多麻烦。
先到这里吧。