作用域:作用于此目录及其所有子目录,使用时候注意一个性能问题,Apache必须在所有上级的目录中查找.htaccess文件
apache 开启url重写
httpd.conf下
LoadModule rewrite_module modules/mod_rewrite.so
IIS
<directory>中
AllowOverride none改成AllowOverride all
1、基本
<Files ~ "^.(htaccess|htpasswd)$">
deny from all
</Files>
order deny,allow
Files后的波浪线表示启用“正则表达式”,简单的写法有:<Files *>,Order命令:通过Allow,Deny参数,Apache首先找到并应用Allow命令,然后应用Deny命令,以阻止所有访问,也可以使用Deny,Allow。也就是说
deny 代表不允许,allow代表允许
2、文件列表
Options -Indexes 隐藏
Options +Indexes 显示
3、图片缓存
<FilesMatch ".(gif|jpg|jpeg|png|ico)$">
Header set Cache-Control "max-age=3600"
</FilesMatch>
max-age后面代表缓存时间,单位秒
4、自定义错误页面
ErrorDocument 错误代码 页面地址
一行一个,错误代码参考信息如下
400 错误的请求
401 认证失败
402 需要付费
403 禁止访问(Forbidden)
404 未找到(Not Found)
405 方法不允许
406 不可接受
407 需要代理认证
408 请求超时
409 请求冲突
410 失败
411 需要长度
412 条件失败
413 请求实体太长
414 请求URI太长
500 服务器内部错误
501 未实现
502 错误的网关
503 服务不可用
504 网关超时
505 HTTP版本不支持
5、预设页面
多个之间用空格隔开,越左边,优先级越高
DirectoryIndex index.php index.html
6、www重定向
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(to\.com)(:80)? [NC]
RewriteRule ^(.*) http://www.to.com/$1 [R=301,L]
<pre name="code" class="plain">302重定向是暂时的重定向,搜索引擎会抓取新的内容而保留旧的网址
301代表永久性转移
重定向后的地址为www.to.com
其他说明:
NC : no case,不区分大小写,忽略大小写;L : last,表示已是最后一条规则,.htaccess文件解析将退出;R : redirect,重定向;F : forbidden,禁止访问。
7、页面重定向
Redirect permanent from.html to.html
一行一条
<strong>8、权限控制
</strong>allow from allowip
<pre name="code" class="plain"><pre name="code" class="plain">deny from denyip
一行一条
9、图片防盗链接
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteRule .*\.(gif|jpg|jpeg|bmp|png)$ http://www.example.com/photo.jpg [R,NC]
<strong>10、使用 GZIP 对输出进行压缩</strong>
<IfModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file \.(html?|txt|css|js|php|pl)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</IfModule>
使用上面代码的前提是启用 mod_gzip 模块
11、禁止脚本执行
Options -ExecCGI
AddHandler cgi-script .php .pl .py .jsp .asp .htm .shtml .sh .cgi
12、URL 重写
RewriteEngine on
RewriteRule ^filename-([0-9]+)\.html$ filename.php?id=$1
地址 http://httpd.apache.org/docs/2.2/howto/htaccess.html