PHP .htaccess文件详细介绍

时间:2017-07-27
.htaccess的主要作用就是实现url改写,即URL伪静态,本文章向大家介绍.htaccess文件的相关知识点及如何利用.htaccess文件实现URL伪静态,需要的朋友可以参考一下。

1.什么是.htaccess文件及

.htaccess文件(或者"分布式配置文件")提供了针对每个目录改变配置的方法,即在一个特定的目录中放置一个包含指令的文件,其中的指令作用于此目录及其所有子目录。

如果需要使用.htaccess以外的其他文件名,可以用AccessFileName指令来改变。例如,需要使用.config ,则可以在服务器配置文件中按以下方法配置:AccessFileName .config

通常,.htaccess文件使用的配置语法和主配置文件一样。AllowOverride指令按类别决定了.htaccess文件中哪些指令才是有效的。如果一个指令允许在.htaccess中使用,那么在本手册的说明中,此指令会有一个覆盖项段,其中说明了为使此指令生效而必须在AllowOverride指令中设置的值。

2.htaccess文件使用前提

.htaccess的主要作用就是实现url改写,也就是当浏览器通过url访问到服务器某个文件夹时,作为主人,我们可以来接待这个url,具体地怎样接待它,就是此文件的作用。所有的访问都是通过URL实现,所以.htaccess的作用非同小可。正因为此,所以一般地网站通过设置.htaccess,通过一个十分友好的url吸引用户进来,然后用.htaccess把用户带到需要访问的位置。

要想使用这个强大功能,就得开启apache里面的重写模块。

打开apache的配置文件,将LoadModule rewrite_module modules/mod_rewrite.so前边的#去掉,也就是开启rewrite功能

还要修改里边的AllowOverride,改为AllowOverride all修改全部的。



3.htaccess基本语法介绍

开启重写引擎 :RewriteEngine on

设置重写的根目录:RewriteBase /     — 说明 :因为定义了这个文件夹,所以对应的替换就有了一个参照。

匹配所有符合条件的请求:RewriteCond       — 说明:RewriteCond 定义了一系列规则条件,这个指令可以有一条或者多条,只有用户拿来的url符合这些条件之后,我们的.htaccess才开始接待,否则用户就直接自己去访问所需要的目录了。

举个例子,为了能让搜索引擎更多地抓取我们的网页而避免重复抓,我们通常把没有www的域名重定向到www.XXX.com,如下就实现了这个功能:

RewriteEngine On

RewriteCond %{HTTP_HOST}  ^manongjc\.com$ [NC]

RewriteRule ^(.*)$  http://www.manongjc.com/$1 [R=301,L]

上例便把manongjc.com 重定向到www.manongjc.com

%{HTTP_HOST} 是指取得用户访问的URL的主域名  然后空格后面是一个正则表达式匹配,意识就是说是否是 manongjc.com 。

如果用户访问使用的URL满足所有列出的RewriteCond 提出的条件,那么进行下一步RewriteRule 即开始进行引导,这才开始实现.htaccess文件的重要功能。

同样,前面是正则表达式,用户分析用户的除了主域名manongjc.com之外的URL ,^(.*)$的意思就是所有的内容。 然后空格后面写的是我们引导用户访问的目录,我们带着他走到新的一个域名上。$1 指的是前面括号里匹配url所得到的内容。

4.利用htaccess文件实现伪静态

这里用我曾经写的程序中的代码举例新建一个.htaccess文件。放在网站根目录写入以上适用于自己程序的代码!

下面是我写的

RewriteEngine On

#RewriteBase / 

RewriteRule ^look-(\d+)\.html$ look.php?id=$1 

RewriteRule ^(\d+)\.html$ index.php?id=$1

RewriteEngine On 表示将Rewrite开启

RewriteBase / 指定重写规则的根目录,一般不需要所以已经用#注释掉了

RewriteRule 后面跟重写规则,正则表达式以^开始以$结束 (有多条规则则写多个RewriteRule)

规则第一条表示将http://127.0.0.1/look.php?id=3转换为http://127.0.0.1/look-3.html

第二条规则将http://127.0.0.1/index.php?id=3转换为http://127.0.0.1/3.html

5.常见的.htaccess应用举例

1、防止盗链,如果来得要访问jpe jpg bmp png结尾的url 用户不是来自我们的网站,那么让他看一张我们网站的展示图片。

RewriteEngine On

RewriteCond %{HTTP_REFERER} !^http://(.+.)?mysite.com/ [NC]

RewriteCond %{HTTP_REFERER} !^$

RewriteRule .*.(jpe?g|gif|bmp|png)$ /images/nohotlink.jpg [L]

2、网站升级的时候,只有特定IP才能访问,其他的用户将看到一个升级页面

RewriteEngine on

RewriteCond %{REQUEST_URI} !/upgrade.html$

RewriteCond %{REMOTE_HOST} !^24\.121\.202\.30

RewriteRule $ http://www.nbphp.com/upgrade.html [R=302,L]

3、把老的域名转向新域名

# redirect from old domain to new domain

RewriteEngine On

RewriteRule ^(.*)$http://www.yourdomain.com/$1[R=301,L]