免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3339 | 回复: 2
打印 上一主题 下一主题

[Web] .htaccess 实例 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-09-19 10:17 |只看该作者 |倒序浏览
7可用积分
apache下的 .htaccess可以做很多事情,包括文件夹密码保护、用户自动重定向、改变你的文件扩展名、封禁特定IP地址的用户、禁止目录列表,以及使用其他文件作为index文件。
本人以前没有使用过,今天试了试,遇到了很多困惑:比如,我使用了deny from all,虽不能返回网页内容,但返回了一个apache的测试页面,而不是不能访问的警告。再比如我想重定向页面,使用Redirect 就可以,使用 Rewrite 就不行......

请问哪位高手有这方面的经验,以实例的形式讲解一下这方面知识,相信会有很多朋友表示欢迎的。

最佳答案

查看完整内容

详细请参照:http://lamp.linux.gov.cn/Apache/ApacheMenu/howto/htaccess.html

论坛徽章:
0
2 [报告]
发表于 2008-09-19 10:17 |只看该作者
详细请参照:http://lamp.linux.gov.cn/Apache/ApacheMenu/howto/htaccess.html

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

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

  6. 2. Error Documents 错误文档
  7. Official document: ErrorDocument Directive
  8. ErrorDocument code document
  9. 例子
  10. ErrorDocument 400 /errors/badrequest.html
  11. ErrorDocument 404 http://yoursite/errors/notfound.html
  12. ErrorDocument 401 “Authorization Required”

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

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

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

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

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

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

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

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

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

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

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

  221. 13. Preventing Directory Listing 防止目录列表时显示
  222. IndexIgnore *
  223. IndexIgnore *.jpg *.gif
  224. Tips:
  225. 允许目录列表显示: Options +Indexes
  226. 禁止目录列表显示: Options -Indexes
  227. 显示提示信息: 页首 文件HEADER, 页尾 文件README
  228. 本文来自: 大鹏天空([url]www.rocsky.net[/url]) 详细出处参考:[url]http://www.rocsky.net/web-programming/php/htaccess-rule-details/[/url]
复制代码

论坛徽章:
0
3 [报告]
发表于 2008-09-22 10:36 |只看该作者
非常感谢二楼大哥的回复!

还有两个小疑惑想再请教一下:
第一、
5. Blocking users by IP 根据IP阻止用户访问
order allow,deny
deny from 10.7.13.30
deny from all

测试:http://10.7.13.31/test.php
返回结果正确
但如果测试:http://10.7.13.31
返回的只是:Red Hat Enterprise Linux Test Page
而不是:Forbidden 的信息

第二、
我在 httpd.conf 里可以用 rewrite 轻松实现页面跳转,但在 .htaccess 里一直实现不了,可否指点一下。

谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP