.htaccess功能举例


重定向和url重写

一个简单的重定向

[shell]Redirect 301 ^old\\.html$ http://localhost/new.html[/shell]

这是设置一个http状态码为301(永久移动)并把所有访问old.html转向到new.html。使用了正则表达式来匹配访问的页面,后面的url必须是完整路径。

Url重写

[shell]RewriteEngine on
RewriteRule ^old\\.html$ new.html[/shell]

第一行打开重写引擎

第二行是重写规则。这样用户访问old.html时实际却是访问的new.html,而且用户对此好吧知情。因为地址栏里依旧显示是old.html。

为了在地址栏显示新的访问地址,我们可以加个f标志在rewriterule语句里。

[shell]RewriteRule ^old\\.html$ http://hostname/new.html [r=301][/shell]

下面是把带查询参数的url重写成对搜索引擎友好的url

[shell]RewriteRule ^products/([^/]+)/([^/]+)/([^/]+) product.php?cat=$1&brand=$2&prod=$3[/shell]

这条规则允许访问者以类似这样的url products/turntables/technics/sl1210, 来访问product.php?cat=turntables&brand=technics&prod=sl1210.

括号里为一个单元,分别对应后面的$1,$2,$3。[^/]+ 在原括号里表示除了/之外的任何一个或是多个字符。

自定义错误页面

[shell]ErrorDocument 404"/404.html"[/shell]

这是定义404页面无法找到的错误,也可以定义其他错误代码的页面。

限定访问特点资源

[shell]AuthName"Username and password required"

AuthUserFile/path/to/.htpasswd

Require valid-user

AuthType Basic[/shell]

保护protectedfile.html,authName是登陆框的提示信息,authuserfile是.htpasswd文件的路径

阻止某些ip访问

[shell]order allow,deny
deny from 192.168.0.1

allow from all[/shell]

Order告诉apache指令的顺序。这里的这个是先允许后拒绝的。虽然allow from all后出现但是还是在前面生效。拒绝了192.168.0.1的访问。也可以按段来屏蔽访问的,只要只指定前面的几段就可以类似,192.168.

实现缓存

[shell]ExpiresActive on
ExpiresByType image/gif "access plus 1 month"

ExpiresByType image/png "access plus 1 month"

ExpiresByType image/jpg "access plus 1 month"

ExpiresByType image/jpeg "access plus 1 month"[/shell]

第一行开启,下面分别控制各种资源都加上一个月的缓存期。这个功能依赖apache的mod_expires 模块。

还可以实现压缩,以减少流量。

4 Responses Comment (4) Trackback (0)
  1. yxiao :

    要用的时候百度。

  2. 范县爷 :

    学习一下,一直在用的,很喜欢贵站,不知是否可以交换一下友情

发表评论