分享

htaccess功能使用大全

 sumi2005 2014-05-04
  1. .htaccess可以做大量范围的事情,
  2. 包括:文件夹密码保护、用户自动重新指向、自定义错误页面、变更你的文件扩展名、屏蔽特定的用户IP地址、只允许特定的IP地址、
  3. 停止目录表以及使用其他文件作为index文件,等等......

  4. 1. Introduction 介绍
  5. 文件名 .htaccess 属性 644 (RW-R–R–)
  6. htaccess会影响它所在目录下的所有子目录
  7. 注意大多数内容都要求保持在一行之内,不要换行,否则会引起错误

  8. 2. Error Documents 错误文档
  9. Official document: ErrorDocument Directive
  10. ErrorDocument code document
  11. 例子
  12. ErrorDocument 400 /errors/badrequest.html
  13. ErrorDocument 404 http://yoursite/errors/notfound.html
  14. ErrorDocument 401 “Authorization Required”
  15. (注意之后内容如果出现的双引号需要转义为 \”)
  16. 常见HTTP状态码
  17. Successful Client Requests
  18. 200 OK
  19. 201 Created
  20. 202 Accepted
  21. 203 Non-Authorative Information
  22. 204 No Content
  23. 205 Reset Content
  24. 206 Partial Content
  25. Client Request Redirected
  26. 300 Multiple Choices
  27. 301 Moved Permanently
  28. 302 Moved Temporarily
  29. 303 See Other
  30. 304 Not Modified
  31. 305 Use Proxy
  32. Client Request Errors
  33. 400 Bad Request
  34. 401 Authorization Required
  35. 402 Payment Required (not used yet)
  36. 403 Forbidden
  37. 404 Not Found
  38. 405 Method Not Allowed
  39. 406 Not Acceptable (encoding)
  40. 407 Proxy Authentication Required
  41. 408 Request Timed Out
  42. 409 Conflicting Request
  43. 410 Gone
  44. 411 Content Length Required
  45. 412 Precondition Failed
  46. 413 Request Entity Too Long
  47. 414 Request URI Too Long
  48. 415 Unsupported Media Type
  49. Server Errors
  50. 500 Internal Server Error
  51. 501 Not Implemented
  52. 502 Bad Gateway
  53. 503 Service Unavailable
  54. 504 Gateway Timeout
  55. 505 HTTP Version Not Supported

  56. 3. Password Protection 密码保护
  57. Official document: Authentication, Authorization and Access Control
  58. 假设密码文件为.htpasswd
  59. AuthUserFile /usr/local/safedir/.htpasswd (这里必须使用全路径名)
  60. AuthName EnterPassword
  61. AuthType Basic
  62. 两种常见验证方式:
  63. Require user windix
  64. (仅允许用户windix登陆)
  65. Require valid-user
  66. (所有合法用户都可登陆)
  67. Tip: 如何生成密码文件
  68. 使用htpasswd命令(apache自带)
  69. 第一次生成需要创建密码文件
  70. htpasswd -c .htpasswd user1
  71. 之后增加新用户
  72. htpasswd .htpasswd user2

  73. 4. Enabling SSI Via htaccess 通过htaccess允许SSI(Server Side Including)功能
  74. AddType text/html .shtml
  75. AddHandler server-parsed .shtml
  76. Options Indexes FollowSymLinks Includes
  77. DirectoryIndex index.shtml index.html

  78. 5. Blocking users by IP 根据IP阻止用户访问
  79. order allow,deny
  80. deny from 123.45.6.7
  81. deny from 12.34.5. (整个C类地址)
  82. allow from all

  83. 6. Blocking users/sites by referrer 根据referrer阻止用户/站点访问
  84. 需要mod_rewrite模块
  85. 例1. 阻止单一referrer: badsite.com
  86. RewriteEngine on
  87. # Options +FollowSymlinks
  88. RewriteCond %{HTTP_REFERER} badsite\.com [NC]
  89. RewriteRule .* - [F]
  90. 例2. 阻止多个referrer: badsite1.com, badsite2.com
  91. RewriteEngine on
  92. # Options +FollowSymlinks
  93. RewriteCond %{HTTP_REFERER} badsite1\.com [NC,OR]
  94. RewriteCond %{HTTP_REFERER} badsite2\.com
  95. RewriteRule .* - [F]
  96. [NC] - 大小写不敏感(Case-insensite)
  97. [F] - 403 Forbidden
  98. 注意以上代码注释掉了”Options +FollowSymlinks”这个语句。如果服务器未在 httpd.conf 的 段落设置 FollowSymLinks,
  99. 则需要加上这句,否则会得到”500 Internal Server error”错误。

  100. 7. Blocking bad bots and site rippers (aka offline browsers) 阻止坏爬虫和离线浏览器
  101. 需要mod_rewrite模块
  102. 坏爬虫? 比如一些抓垃圾email地址的爬虫和不遵守robots.txt的爬虫(如baidu?)
  103. 可以根据 HTTP_USER_AGENT 来判断它们
  104. (但是还有更无耻的如”中搜 zhongsou.com”之流把自己的agent设置为 “Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)” 太流氓了,就无能为力了)
  105. RewriteEngine On
  106. RewriteCond %{HTTP_USER_AGENT} ^BlackWidow [OR]
  107. RewriteCond %{HTTP_USER_AGENT} ^Bot\ mailto:craftbot@yahoo.com [OR]
  108. RewriteCond %{HTTP_USER_AGENT} ^ChinaClaw [OR]
  109. RewriteCond %{HTTP_USER_AGENT} ^Custo [OR]
  110. RewriteCond %{HTTP_USER_AGENT} ^DISCo [OR]
  111. RewriteCond %{HTTP_USER_AGENT} ^Download\ Demon [OR]
  112. RewriteCond %{HTTP_USER_AGENT} ^eCatch [OR]
  113. RewriteCond %{HTTP_USER_AGENT} ^EirGrabber [OR]
  114. RewriteCond %{HTTP_USER_AGENT} ^EmailSiphon [OR]
  115. RewriteCond %{HTTP_USER_AGENT} ^EmailWolf [OR]
  116. RewriteCond %{HTTP_USER_AGENT} ^Express\ WebPictures [OR]
  117. RewriteCond %{HTTP_USER_AGENT} ^ExtractorPro [OR]
  118. RewriteCond %{HTTP_USER_AGENT} ^EyeNetIE [OR]
  119. RewriteCond %{HTTP_USER_AGENT} ^FlashGet [OR]
  120. RewriteCond %{HTTP_USER_AGENT} ^GetRight [OR]
  121. RewriteCond %{HTTP_USER_AGENT} ^GetWeb! [OR]
  122. RewriteCond %{HTTP_USER_AGENT} ^Go!Zilla [OR]
  123. RewriteCond %{HTTP_USER_AGENT} ^Go-Ahead-Got-It [OR]
  124. RewriteCond %{HTTP_USER_AGENT} ^GrabNet [OR]
  125. RewriteCond %{HTTP_USER_AGENT} ^Grafula [OR]
  126. RewriteCond %{HTTP_USER_AGENT} ^HMView [OR]
  127. RewriteCond %{HTTP_USER_AGENT} HTTrack [NC,OR]
  128. RewriteCond %{HTTP_USER_AGENT} ^Image\ Stripper [OR]
  129. RewriteCond %{HTTP_USER_AGENT} ^Image\ Sucker [OR]
  130. RewriteCond %{HTTP_USER_AGENT} Indy\ Library [NC,OR]
  131. RewriteCond %{HTTP_USER_AGENT} ^InterGET [OR]
  132. RewriteCond %{HTTP_USER_AGENT} ^Internet\ Ninja [OR]
  133. RewriteCond %{HTTP_USER_AGENT} ^JetCar [OR]
  134. RewriteCond %{HTTP_USER_AGENT} ^JOC\ Web\ Spider [OR]
  135. RewriteCond %{HTTP_USER_AGENT} ^larbin [OR]
  136. RewriteCond %{HTTP_USER_AGENT} ^LeechFTP [OR]
  137. RewriteCond %{HTTP_USER_AGENT} ^Mass\ Downloader [OR]
  138. RewriteCond %{HTTP_USER_AGENT} ^MIDown\ tool [OR]
  139. RewriteCond %{HTTP_USER_AGENT} ^Mister\ PiX [OR]
  140. RewriteCond %{HTTP_USER_AGENT} ^Navroad [OR]
  141. RewriteCond %{HTTP_USER_AGENT} ^NearSite [OR]
  142. RewriteCond %{HTTP_USER_AGENT} ^NetAnts [OR]
  143. RewriteCond %{HTTP_USER_AGENT} ^NetSpider [OR]
  144. RewriteCond %{HTTP_USER_AGENT} ^Net\ Vampire [OR]
  145. RewriteCond %{HTTP_USER_AGENT} ^NetZIP [OR]
  146. RewriteCond %{HTTP_USER_AGENT} ^Octopus [OR]
  147. RewriteCond %{HTTP_USER_AGENT} ^Offline\ Explorer [OR]
  148. RewriteCond %{HTTP_USER_AGENT} ^Offline\ Navigator [OR]
  149. RewriteCond %{HTTP_USER_AGENT} ^PageGrabber [OR]
  150. RewriteCond %{HTTP_USER_AGENT} ^Papa\ Foto [OR]
  151. RewriteCond %{HTTP_USER_AGENT} ^pavuk [OR]
  152. RewriteCond %{HTTP_USER_AGENT} ^pcBrowser [OR]
  153. RewriteCond %{HTTP_USER_AGENT} ^RealDownload [OR]
  154. RewriteCond %{HTTP_USER_AGENT} ^ReGet [OR]
  155. RewriteCond %{HTTP_USER_AGENT} ^SiteSnagger [OR]
  156. RewriteCond %{HTTP_USER_AGENT} ^SmartDownload [OR]
  157. RewriteCond %{HTTP_USER_AGENT} ^SuperBot [OR]
  158. RewriteCond %{HTTP_USER_AGENT} ^SuperHTTP [OR]
  159. RewriteCond %{HTTP_USER_AGENT} ^Surfbot [OR]
  160. RewriteCond %{HTTP_USER_AGENT} ^tAkeOut [OR]
  161. RewriteCond %{HTTP_USER_AGENT} ^Teleport\ Pro [OR]
  162. RewriteCond %{HTTP_USER_AGENT} ^VoidEYE [OR]
  163. RewriteCond %{HTTP_USER_AGENT} ^Web\ Image\ Collector [OR]
  164. RewriteCond %{HTTP_USER_AGENT} ^Web\ Sucker [OR]
  165. RewriteCond %{HTTP_USER_AGENT} ^WebAuto [OR]
  166. RewriteCond %{HTTP_USER_AGENT} ^WebCopier [OR]
  167. RewriteCond %{HTTP_USER_AGENT} ^WebFetch [OR]
  168. RewriteCond %{HTTP_USER_AGENT} ^WebGo\ IS [OR]
  169. RewriteCond %{HTTP_USER_AGENT} ^WebLeacher [OR]
  170. RewriteCond %{HTTP_USER_AGENT} ^WebReaper [OR]
  171. RewriteCond %{HTTP_USER_AGENT} ^WebSauger [OR]
  172. RewriteCond %{HTTP_USER_AGENT} ^Website\ eXtractor [OR]
  173. RewriteCond %{HTTP_USER_AGENT} ^Website\ Quester [OR]
  174. RewriteCond %{HTTP_USER_AGENT} ^WebStripper [OR]
  175. RewriteCond %{HTTP_USER_AGENT} ^WebWhacker [OR]
  176. RewriteCond %{HTTP_USER_AGENT} ^WebZIP [OR]
  177. RewriteCond %{HTTP_USER_AGENT} ^Wget [OR]
  178. RewriteCond %{HTTP_USER_AGENT} ^Widow [OR]
  179. RewriteCond %{HTTP_USER_AGENT} ^WWWOFFLE [OR]
  180. RewriteCond %{HTTP_USER_AGENT} ^Xaldon\ WebSpider [OR]
  181. RewriteCond %{HTTP_USER_AGENT} ^Zeus
  182. RewriteRule ^.* - [F,L]
  183. [F] - 403 Forbidden
  184. [L] - 连接(Link)

  185. 8. Change your default directory page 改变缺省目录页面
  186. DirectoryIndex index.html index.php index.cgi index.pl

  187. 9. Redirects 转向
  188. 单个文件
  189. Redirect /old_dir/old_file.html http:///new_dir/new_file.html
  190. 整个目录
  191. Redirect /old_dir http:///new_dir
  192. 效果: 如同将目录移动位置一样
  193. http:///old_dir -> http:///new_dir
  194. http:///old_dir/dir1/test.html -> http:///new_dir/dir1/test.html
  195. Tip: 使用用户目录时Redirect不能转向的解决方法
  196. 当你使用Apache默认的用户目录,如 http:///~windix,当你想转向 http:///~windix/jump时,你会发现下面这个Redirect不工作:
  197. Redirect /jump http://www.google.com
  198. 正确的方法是改成
  199. Redirect /~windix/jump http://www.google.com
  200. (source: .htaccess Redirect in “Sites” not redirecting: why?
  201. )

  202. 10. Prevent viewing of .htaccess file 防止.htaccess文件被查看
  203. order allow,deny
  204. deny from all

  205. 11. Adding MIME Types 添加 MIME 类型
  206. AddType application/x-shockwave-flash swf
  207. Tips: 设置类型为 application/octet-stream 将提示下载

  208. 12. Preventing hot linking of images and other file types 防盗链
  209. 需要mod_rewrite模块
  210. RewriteEngine on
  211. RewriteCond %{HTTP_REFERER} !^$
  212. RewriteCond %{HTTP_REFERER} !^http://(www/\.)?mydomain.com/.*$ [NC]
  213. RewriteRule \.(gif|jpg|js|css)$ - [F]
  214. 解析:
  215. 若 HTTP_REFERER 非空 (来源为其他站点,非直接连接) 并且
  216. 若 HTTP_REFERER 非(www.)mydomain.com开头(忽略大小写[NC]) (来源非本站)
  217. 对于所有含有 .gif/.jpg/.js/.css 结尾的文件给出 403 Forbidden 错误[F]
  218. 也可指定响应,如下例显示替换图片
  219. RewriteRule \.(gif|jpg)$ [R,L]
  220. [R] - 转向(Redirect)
  221. [L] - 连接(Link)

  222. 13. Preventing Directory Listing 防止目录列表时显示
  223. IndexIgnore *
  224. IndexIgnore *.jpg *.gif
  225. Tips:
  226. 允许目录列表显示: Options +Indexes
  227. 禁止目录列表显示: Options -Indexes
  228. 显示提示信息: 页首 文件HEADER, 页尾 文件README
复制代码

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多