
htaccess文件简介
htaccess文件是Apache服务器中的一个配置文件,负责相关目录下的网页配置 /www/html下的.htaccess文件与主配置文件中段中内容完全等效 .htaccess文件中的配置指令作用于.htaccess文件所在的目录及其所有子目录 且子目录中的指令会覆盖父目录或者主配置文件中的指令
rewrite的语法格式:
- RewriteEngine On #启用rewrite起作用。
- RewriteBase url-path #设定基准目录。
- RewriteCond test-string condPattern #用于测试rewrite的匹配条件。
- RewriteRule Pattern Substitution #规则
RewriteEngine On|Off
RewriteEngine 用于开启或停用rewrite功能。rewrite configurations 不会自动继承
RewriteBase URL-path
RewriteBase用于设定重写的基准URL RewriteRule可以用于目录级的配置文件中 (.htaccess)并在局部范围内起作用 即规则实际处理的只是剥离了本地路径前缀的一部分 处理结束后,这个路径会被自动地附着回去 默认值是”RewriteBase physical-directory-path”
RewriteCond TestString CondPattern [flags]
RewriteCond指令定义了一个规则的条件,即,在一个RewriteRule指令之前有一个或多个RewriteCond指令 条件之后的重写规则仅在当前URI与pattern匹配并且符合这些条件的时候才会起作用 TestString是一个纯文本的字符串 但是还可以包含下列可扩展的成分:
+RewriteRule反向引用: 引用方法是 $N (0 <= N <= 9) 引用当前(带有若干RewriteCond指令的)RewriteRule中的与pattern匹配的分组成分(圆括号!)+RewriteCond反向引用: 引用方法是 %N (1 <= N <= 9) 引用当前若干RewriteCond条件中最后符合的条件中的分组成分(圆括号!)+RewriteMap 扩展: 引用方法是 ${mapname:key|default} + 服务器变量: 引用方法是 %{ NAME_OF_VARIABLE } CondPattern是条件参数Flags标识是是第三个参数,可选OR、AND、NC,默认为ANDRewriteRule Pattern Substitution [Flags]
其中的Pattern就是参数,一般为一些文件的扩展名 Substitution是用来替换前面用的,这儿的Flags 常用的R表示 redirect(强制重定向),F表示forbidden(禁止访问),L表示last(最后) 通常当你希望停止重写操作而立即重定向时,可用它
.htaccess文件URL重写写法例子
1. 反盗链
RewriteBase /RewriteCond %{HTTP_REFERER} !^$RewriteCond %{HTTP_REFERER} !^http://(www.)?yoursite.com/.*$ [NC]RewriteRule .(gif|jpg|swf|flv|png)$ /feed/ [R=302,L]2. 防止目录浏览
Options All -Indexes3. SEO友好的301永久重定向
Redirect 301 http://www.yoursite.com/article.html http://www.yoursite.com/archives/article4. 显示个性化的 404 错误页面
ErrorDocument 404 /404.html5. 设置目录的默认页面
假如你需要为不同的目录设置不同的默认页面,你可以很容易的通过 .htaccess 实现:
DirectoryIndex about.html6. 基于referer来限制网站访问
<IfModule mod_rewrite.c>RewriteEngine on RewriteCond %{HTTP_REFERER} spamteam.com [NC,OR]RewriteCond %{HTTP_REFERER} trollteam.com [NC,OR]RewriteRule .* – [F]</ifModule>7. 限制PHP上传文件大小
php_value upload_max_filesize 20Mphp_value post_max_size 20Mphp_value max_execution_time 200php_value max_input_time 2008. 通过压缩文件来减少网络流量
AddOutputFilterByType DEFLATE text/plainAddOutputFilterByType DEFLATE text/htmlAddOutputFilterByType DEFLATE text/xmlAddOutputFilterByType DEFLATE text/cssAddOutputFilterByType DEFLATE application/xmlAddOutputFilterByType DEFLATE application/xhtml+xmlAddOutputFilterByType DEFLATE application/rss+xmlAddOutputFilterByType DEFLATE application/javascriptAddOutputFilterByType DEFLATE application/x-javascript9. 缓存文件
<FilesMatch “.(flv|gif|jpg|jpeg|png|ico|swf|js|css|pdf)$”>Header set Cache-Control “max-age=2592000〃</FilesMatch>10. 添加尾部的反斜杠
<IfModule mod_rewrite.c>RewriteCond %{REQUEST_URI} /+[^\.]+$RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]</IfModule>11. 处理移动过的文件
Redirect 301 /old.html http://yoursite.com/new.html或者是
RewriteRule /old.html http://yoursite.com/new.html [R=301,L]如果想隐式跳转
RewriteRule /old.html http://yoursite.com/new.html [L]12. html后缀的url链接到php文件
RewriteRule ^/?([a-z/]+)\.html$ $1.php [L]13. 旧文件夹的内容链接到新文件夹
RewriteRule ^/?old_directory/([a-z/.]+)$ new_directory/$1 [R=301,L]14. 隐藏文件名
RewriteRule ^/?([a-z]+)$ $1.php [L]15. 阻止/允许特定IP/IP段
禁止所有IP,除了指定的
order deny,allowdeny from all如果想允许IP段,如123.123.123.0 ~ 123.123.123.255,则
allow from 123.123.123.allow from 123.123.123.123
ErrorDocument 403 /page.html
<Files page.html>allow from all</Files>如果想禁止特定IP
deny from 123.123.123.12316. 添加MIME类型
AddType video/x-flv .flv如果设置类型为 application/octet-stream 将提示下载
AddType application/octet-stream .pdf这篇文章是否对你有帮助?