盘点LINUX服务器.htaccess文件语法规则大全
作者:秋了秋 发表时间:2014年07月12日
.htacess文件大家都很熟悉,这是LINUX服务器专属规则容器,借助这个容器我们可以完成很多重要的工作,主要是网站的一些附属功能。
①.htacess文件语法规则之访问控制,我们可以通过编写规则禁止或允许某个ip访问,实现黑名单和白名单功能,写法为:
<Files ~ "^.*.([Ll][Oo][Gg])|([eE][xX][eE])"> Order allow,deny Deny from 125.15.56.9 allow from 223.45.65.2
</Files>
这个的意思是禁止ip为125.15.56.9的用户访问,允许ip为223.45.65.2的用户访问,依次可以往下列。照这个写法插进去就是了。
②.htacess文件语法规则之url重写,比如说wordpress的伪静态重写规则:
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule>
注:RewriteEngine On表示开启url重写功能
301重定向规则:
RewriteEngine on RewriteCond %{HTTP_HOST} ^123.108.108.193$ [OR] RewriteCond %{HTTP_HOST} ^netblog.site$ RewriteRule ^(.*)$ //netblog.cn/$1 [R=301,L]
注:此语法表示把aaaa.ccaeo.com和netblog.site永久301转到网址//netblog.cn上,如有更多,可以往下列。
③.htacess文件语法规则之自定义404错误页面,把不存在的页面用404页面代替,并告诉搜索引擎不要再抓取该页面了,语法为:
ErrorDocument 404 /404.html或者ErrorDocument 404 //netblog.cn/blog/404.html
注:此语法前者为不存在的页面就用网站根目录的404.html文件替换,此为相对地址,后者就是绝对地址,即可以引用站外文件比如//netblog.cn/blog/404.html
同样还有很多错误都可以用该语法处理,只要将前面的404数字替换掉就是。
401 – Authorization Required 需要验证 400 – Bad request 错误请求 403 – Forbidden 禁止 500 – Internal Server Error 内部服务器错误
④.htacess文件语法规则之禁止陈列网站目录,很多时候因为目录首页文件丢失,访问者访问该目录就可以全部看到该目录的文件,并进行下载,对自己的网页文件很不安全,所以我们可以通过语法禁止陈列目录:
Options -Indexes
⑤.htacess文件语法规则之首页文件的确定,通常网站的默认首页是index,但我们可以编写语法自定义首页文件,比如:
DirectoryIndex index.php3 messagebrd.pl index.html index.htm
此写法表示此网站目录的首页是index.php3,如果没有该文件,那就用messagebrd.pl代替,依次类推。
⑥.htacess文件语法规则之防盗链功能,比如:
<Files ~ "^.(htaccess|htpasswd)$"> deny from all </Files> order deny,allow RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://(www\.)?baidu.com(/)?.*$ [NC] RewriteCond %{HTTP_REFERER} !^http://(www\.)?mail.qq.com(/)?.*$ [NC] RewriteCond %{HTTP_REFERER} !^http://(www\.)?google.com(/)?.*$ [NC] RewriteCond %{HTTP_REFERER} !^http://(www\.)?netblog.site(/)?.*$ [NC] RewriteCond %{HTTP_REFERER} !^http://(www\.)?wuover.ccaeo.com(/)?.*$ [NC] RewriteCond %{HTTP_REFERER} !^http://(www\.)?netblog.cn(/)?.*$ [NC] RewriteRule .*\.(gif|jpg|jpeg|png|bmp|zip|rar|7z|swf|mp3|js|php)$ //img.netblog.site/daolian.gif [NC,L]
此语法的意思是,把网站的gif|jpg|jpeg|png|bmp|zip|rar|7z|swf|mp3|js|php类型文件禁止站外调用,除了上面所列的白名单网址。若是其它网站调用,则用//img.netblog.site/daolian.gif代替源文件。
⑦.htacess文件语法规则之压缩网页文件,提升网站速度。
AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE text/xml AddOutputFilterByType DEFLATE text/css AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE application/xhtml+xml AddOutputFilterByType DEFLATE application/rss+xml AddOutputFilterByType DEFLATE application/javascript AddOutputFilterByType DEFLATE application/x-javascript
注:压缩text, html, javascript, css, xml等文档文件
⑧.htacess文件语法规则之开启缓存:
<FilesMatch “.(flv|gif|jpg|jpeg|png|ico|swf|js|css|pdf)$”> Header set Cache-Control “max-age=2592000″ </FilesMatch>
注:缓存文档类型:flv|gif|jpg|jpeg|png|ico|swf|js|css|pdf,其中2592000是缓存时间,单位为秒。
同样的禁止某些文档缓存:
<FilesMatch “.(pl|php|cgi|spl|scgi|fcgi)$”> Header unset Cache-Control </FilesMatch>
⑨.htacess文件语法规则之防黑客,增强网站安全性:
RewriteEngine On
# proc/self/environ? 没门! RewriteCond %{QUERY_STRING} proc/self/environ [OR]
# 阻止脚本企图通过URL修改mosConfig值 RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|%3D) [OR]
# 阻止脚本通过URL传递的base64_encode垃圾信息 RewriteCond %{QUERY_STRING} base64_encode.*(.*) [OR]
# 阻止在URL含有<script>标记的脚本 RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR]
# 阻止企图通过URL设置PHP的GLOBALS变量的脚本 RewriteCond %{QUERY_STRING} GLOBALS(=|[|%[0-9A-Z]{0,2}) [OR]
# 阻止企图通过URL设置PHP的_REQUEST变量的脚本 RewriteCond %{QUERY_STRING} _REQUEST(=|[|%[0-9A-Z]{0,2})
# 把所有被阻止的请求转向到403禁止提示页面! RewriteRule ^(.*)$ index.php [F,L]
⑩.htacess文件语法规则之其它:
# 保护你的 htaccess 文件 <Files .htaccess> order allow,deny deny from all </Files> # 阻止查看指定的文件 <Files secretfile.jpg> order allow,deny deny from all </Files> # 多种文件类型 <FilesMatch “.(htaccess|htpasswd|ini|phps|fla|psd|log|sh)$”> Order Allow,Deny Deny from all </FilesMatch> # 禁止某些目录里的脚本执行权限 AddHandler cgi-script .php .pl .py .jsp .asp .htm .shtml .sh .cgi Options -ExecCGI