设为首页 收藏本站
查看: 764|回复: 0

[经验分享] apache .htaccess 禁止访问某目录方法

[复制链接]

尚未签到

发表于 2015-7-31 08:57:04 | 显示全部楼层 |阅读模式
  http://apps.hi.baidu.com/share/detail/19465970
  --------------------------------------------------

  最简单方法,在所要禁止的目录中的.htaccess文件中添加一下两行代码。

order allow,deny
deny from all
  (可以把all换成某一ip地址)

----


【.htaccess简介】
.htaccess文件,又叫分布式配置文件,它提供了针对每个目录改变配置的方法,可以在一个特定的文档目录中放置一个包含指令的文件,以达到控制此目录及其子目录的目的。通
常.htaccess文件的使用配置语法和主配置文件一样,但是做为用户,当然所能使用的命令是受到限制的。系统管理员可以通过配置apache的AllowOverride指令来配置决
定.htaccess文件中哪些指令有效。如果在文档的子目录中还设置了.htaccess文件的话,子目录中的指令将会覆盖掉上级目录或者主服务器配置文件中的指令。此应用尤其是ISP在
同一个机器上运行了多个用户站点,而又希望用户可以自己改变配置的情况下特别有意义。

【.htaccess应用】
1、错误文档的定位
常见的客户端请求错误返回代码:
401 Authorization Required
403 Forbidden
404 Not Found
405 Method Not Allowed
408 Request Timed Out
411 Content Length Required
412 Precondition Failed
413 Request Entity Too Long
414 Request URI Too Long
415 Unsupported Media Type
常见的服务器错误返回代码:
500 Internal Server Error
我们可以利用.htaccess指定自己事先制作好的错误提示页面。例如:
ErrorDocument 404 /help/errors/notfound.html
ErrorDocument 500 /help/errors/internalerror.html
ErrorDocument 错误代码 /目录名/文件名.扩展名
当然如果提示的信息很少的话,我们直接使用html就行了,如:
ErrorDocument 404 "Sorry the page you access is not exist"
以上指令等同于

ErrorDocument 404 "Sorry the page you access is not exist"

2、使用服务器认证
要利用.htaccess对某个目录下的文档设定访问用户和对应的密码,首先要做的是生成一个.htpasswd的文本文档,使用
htpasswd -c d:/passwords wwq
输入用户密码即可生成.htpasswd的文本文档
在.htaccess文件中加入:
AuthType Basic
AuthName "Restricted Files"
AuthUserFile d:/passwords
Require user wwq
以上只允许用户wwq访问目录
允许多人访问则必须建立一个组文件以确定组中的用户,其格式很简单,可以用你喜欢的编辑器建立,例如:
admin: wwq
editer: lily baty
我将它保存为d:/下的groups文件
使用htpasswd d:/passwords lily(htpasswd d:/passwords groups)为编辑组添加两个用户
修改.htaccess:
AuthType Basic
AuthName "By Invitation Only"
AuthUserFile d:/passwords
AuthGroupFile d:/groups
Require group admin editer
当然也可以使用Require valid-user指令允许密码文件中的所有用户使用正确的密码进行访问。
3、拒绝来自某个IP的访问
order allow,deny
deny from 205.252.46.165 #拒绝ip地址为205.252.46.165的访问
deny from 219.5.45. #拒绝ip地址段为219.5.45.1-255的访问
deny from cyberthugs.com moreidiots.com #拒绝域名为cyberthugs.com、moreidiots.com的访问
allow from all
如果想禁止所有访问,则可以使用deny from all指令实现。
如果只想指定域名的访问则使用如下指令:
Order deny,allow
Deny from all #必须有这句,否则不起作用
Allow from dev.example.com #只允许dev.example.com的访问
只允许本地访问
Order deny,allow
Deny from all
Allow from 127.0.0.1
4、保护.htaccess文档
如果在以前的老版本的apache中,直接用http://www.dd.com/www/.htaccess可能将站点的.htaccess文件获取,通过它可以得到包含了密码文件的路径。不过现在这个在apache2中
好像就是多余的了。不过我们还是可以在.htaccess文件中加入如下指令,这样就可以将.htaccess保护起来。

order allow,deny
deny from all

5、url转向和ssi包含
有很多人都问我,我的站是租用别人的虚拟主机啊,怎么用那个url重写和ssi啊,是不是不能用啊,其实也不是不能用,用.htaccess就可以实现,当然前提是你的服务提供商允许
啦。
Options +Includes
AddType text/html shtml
AddHandler server-parsed shtml
就可以使用服务器端包含啦
使用Redirect指令实现URL转向:
Redirect /旧目录/旧文档名 新文档的地址
或者整个目录的转向: Redirect 旧目录 新目录
例如:Redirect /www/ http://localhost/test/
6、防止盗链
RewriteEngine on
RewriteCond % !^$
RewriteCond % !^http://(www/.)?域名.com/.*$ [NC]
RewriteRule /.(gif|jpg)$ - [F]
或者用图片代替之
RewriteEngine on
RewriteCond % !^$
RewriteCond % !^http://(www/.)?域名.com/.*$ [NC]
RewriteRule /.(gif|jpg)$ http://www.域名.com/替代图片文件名 [R,L]
【使用.htaccess文件的不足】
1、性能
AllowOverride启用了使用.htaccess文件,则apache需要在每个目录中查找.htaccess文件。因此会导致性能下降。另外对每一个请求,都需要读取一次.htaccess文件,还有
apache必须在所有上级的目录中查找.htaccess文件以使有效的指令都起作用,比如如果客户端请求/www/htdocs/help中的页面。服务器必须查找
/.htaccess
/www/.htaccess
/www/htdocs/.htaccess
/www/htdocs/help/.htaccess
四个额外文件(即使这些文件都不存在,当然你可以仅仅允许根目录使用.htaccess文件),也就是说目录深度越深,则访问的额外文件越多,性能越低了。
2、安全
由于在/www/htdocs/help下面的.htaccess文件中放置指令与在主配置文件中中放置相同的指令是完全等效的,这样允许用户自己修改服务器配置,
可能就会导致某些不愿意发生的意想不到的修改,这样就会造成服务器安全问题。这样你就必须考虑是否设置AllowOverride None来完全禁用.htaccess文件。

--------------------------------------------------------------------------

一 开启Mod_rewrite模块

打开Apache2\conf\httpd.conf
搜索 LoadModule rewrite_module modules/mod_rewrite.so (Apache2是这个)
去掉前面的#

搜索AllowOverride None 替换为 AllowOverride All

有好几个找到和下面代码类似的那个



#
# "D:\usr\local\Apache2\cgi-bin" should be changed to whatever your ScriptAliased
# CGI directory exists, if you have that configured.
#

AllowOverride All
Options None
Order allow,deny
Allow from all


二 在Apache2\conf\httpd.conf 最后一行添加


RewriteEngine On
RewriteRule ^(.*)-htm-(.*)$ $1.php?$2

  
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-92515-1-1.html 上篇帖子: Apache LRU算法问题分析解决 下篇帖子: Apache错误日志时时查看
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表