当前位置:首页 > 网站制作 > 正文内容

Apache下.htaccess文件的8个最常见用法

admin14年前 (2010-11-29)网站制作333
 .htaccess文件允许我们针对特定目录及其子目录修改一些服务器设置,虽然这种类型的配置最好是在服务器本身配置文件的小节部分处理,但有时我们根本没有权限访问这个配置文件,尤其是当我们在一台共享的托管主机上,大多数共享主机服务商只允许我们以.htaccess方式来改变服务器的行为。   .htaccess文件是一个简单的文本文件,注意文件名前的“.”很重要,我们可以用自己喜欢的文本编辑器编辑它,然后上传到我们的服务器,将其放在我们想要改变服务器默认行为的目录下。   通过.htaccess文件我们可以做的事包括:为文件夹设置密码保护,创建重定向,调整PHP设置,控制文件缓存,控制服务器如何处理扩展名(例如,我们可以让一个HTML文件通过PHP模块运行,而不是简单的通过Web服务器解析它),以及改变文件返回给访问者的方式。下面我开始介绍这个文件最常见的8种用法。   1、禁止对无索引文件的目录进行文件列表展示   默认情况下,当我们访问网站的某个无索引文件(如index.html,index.htm或index.php)目录时,服务器会显示该目录的文件和子目录列表,这是非常危险的,因为它可能暴露网站的内部结构,也许不小心就将含有敏感信息的文件公之于众了,为了禁止这种行为,我们可以在网站根目录创建一个.htaccess文件,内容如下:   Options –Indexes   2、创建重定向或改变丢失文件的响应状态   当我们从服务器请求一个找不到的文件时,默认情况下服务器会返回404状态码,浏览器和访问者便知道URL指定的位置找不到该文件,但这是一个通用的消息,没有太大的实际意义,我们希望告诉浏览器和访问者更多有用的信息,如:   a、文件被永久移走   状态码301告诉浏览器文件已经被永久移动到另一个位置,这样我们就可以通过.htaccess文件实现重定向了,例如,使用下面的代码可以将浏览器重定向到新的地址:   Redirect 301 /path/from/htaccess/file.html http://www.XXX.com/path/file.html   b、文件被暂时移走   状态码307告诉浏览器文件已经被移走,但这是暂时的,浏览器接收到301状态码时就会访问新地址,但不用改变文件的链接,也不会为新地址创建缓存(除非它受Cache-Control或过期头信息字段控制),浏览器每次都会继续请求源地址。   Redirect 307 /path/from/htaccess/file.html http://www.XXX.com/path/file.html   以、文件不存在   状态码410告诉浏览器,它请求的文件已经从服务器上永久删除,和404不一样,404仅仅表示文件不在这里的意思,而410表示文件不仅不在这里,在其它地方也没有。   Redirect 410 /path/from/htaccess/file.html   3、创建自定义错误响应页面   如果不向浏览器返回状态码,我们可以创建自己的错误页面,我们可以创建一个自定义错误页面,例如,对于401状态码我们可以创建一个未经授权的错误页面,对于404状态码,我们可以创建一个未找到错误页面,我们需要做的就是修改.htaccess文件,添加下面两行代码:   ErrorDocument 401 /path/to/401.html   ErrorDocument 404 /path/to/404.html   4、给不同类型的文件设置缓存过期时间   这个设置告诉浏览器保持文件的缓存多长时间,在未过期前,访问该文件时就不用向服务器发起请求了,服务器向浏览器返回文件时,会附加上一个Expires头信息。   我们可以使用ExpiresDefault指令后面跟一个基础时间+时间长度设置文件的默认过期时间,使用ExpiresByType指令后面跟一个文件类型+基础时间+时间长度指定特定文件类型的过期时间。   基础时间可以是访问时间,它从浏览器请求该文件时开始计数,也可以是修改时间,它从文件最后一次修改时间开始计数,注意,如果你使用修改时间,返回给浏览器的动态内容不会加上Expires头,如动态生成的图像,因为非已存在的文件不存在修改时间。   过期时间要和基础时间结合使用,通过添加一个plus和一个时间,这个时间可以给出年、月、日,时、分、秒,如果我们只使用一个单位,可以使用单数表示,例如,我们可以指定它为“1分钟”或“10分钟”。   在下面的例子中,我使用ExpiresDefault指令将所有文件的默认过期时间设为1天,然后使用ExpiresByType指令为不同文件类型指定过期时间。 <ifModule mod_expires.c>     ExpiresActive On      ExpiresDefault "access plus 1 day"      ExpiresByType image/png "access plus 30 days"      ExpiresByType image/jpeg "access plus 4 weeks"      ExpiresByType image/gif "access plus 1 month"    ExpiresByType image/x-icon "access plus 1 year"      ExpiresByType application/javascript "modification plus 2 weeks"     ExpiresByType text/css "modification plus 14 days" </ifModule>   5、文件发送到浏览器之前先压缩   任何现代浏览器都能处理服务器压缩过的文件,这样做也是为了减少页面的载入时间,如果服务器默认没有开启文件压缩功能,我们可以通过.htaccess文件来开启。   AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript application/x-javascript application/rss+xml application/atom_xml text/javascript   注意,我这里没有为图像文件开启压缩,因为我们的图像文件已经通过其它压缩技术处理好了。   6、给文件夹设置密码保护   为了保护含有敏感数据的特殊文件夹,我们需要创建一个包含有效的用户名和密码的文件,然后在.htaccess文件中添加一些设置,但用户名和密码仍然是以明文形式发送到服务器的,因此很容易受到中间人攻击,除非我们使用SSL。   首先,我们创建一个名为.htpasswd的文件,将权限修改为600(只有文件所有者有读写权),这样其他用户才不能访问。   touch .htpasswd   chmod 600 .htpasswd   创建好文件后,我们需要向这个文件注入用户名和密码,如果你使用Linux或Unix类操作系统,使用htpasswd命令就可以办到,如果你能通过SSH登陆到你的服务器,那么你可以使用htpasswd管理.htpasswd文件中的用户名和密码,如果不行,还有很多在线工具(如http://www.htaccesstools.com/htpasswd-generator/)可以帮助你生成.htpasswd文件中使用的密码。   使用下面的命令可以向这个文件中注入用户名和密码:   htpasswd [passwd file] [user]   如:   htpasswd .htpasswd juan   它会提示你输入密码,然后他会加密密码并保存到.htpasswd文件中。如果Apache是安装在除Windows,Netware和TPF(一种IBM大型机)外的任何系统上,默认情况下下,它会调用crypt()函数加密密码。使用这个命令我们可以创建多个用户,并可以修改已有用户的密码,你可以使用-n参数获得加密后的密码字符串值。   htpasswd -n juan   它会返回类似下面这样的字符串:   juan:n94xSo6uSwhCY   然后用文本编辑器打开.htpasswd文件,将上面返回的内容粘贴到文件中,每行代表一个用户。   还可以使用-m参数调用md5加密方法加密密码,在Windows,Netware和TPF下,默认就使用的是md5加密,也可以适应-s参数调用SHA加密,使用-d参数告诉命令调用crypt函数,在大多数系统上,这也是默认的行为。   如果文件不存在,则添加-c参数,它会创建文件,如果文件已经存在,添加这个参数后就会重写整个文件,只留下新创建的用户,如果想删除.htpasswd文件中的某个用户,使用-D参数。   最后,我们可以和其它命令结合使用,如果加入参数-b,我们可以直接在命令中加上密码,但这样做是不安全的。   htpasswd .htpasswd juan randompassword   创建好用户后,他们就可以访问这个目录及其子目录了,但我们还需要在要保护的文件夹下添加一个.htaccess文件,内容如下:   AuthName "Please authenticate in order to access the contents of this folder"   AuthType Basic   AuthUserFile /full/path/to/.htpasswd   Require valid-user   这里的AuthName指的是要求你输入用户名和密码时的提示信息,AuthType表示需要的认证类型,在这个例子中,我只想弹出一个对话框,要求输入用户名和密码,因此设置为Basic,AuthUserFile指的是保存用户名和密码的文件位置,在这个例子中指的是.htpasswd文件,位置和我们的.htaccess文件相同,Require valid-user指定只有.htpasswd文件包含的合法用户才能访问。   7、将HTML文件当PHP文件使   为了将html扩展名文件当作php文件使用,需要在.htaccess文件中添加下面的内容:   AddType application/x-httpd-php .htm   AddType application/x-httpd-php .html   这样服务器就会把HTML文件作为PHP文件进行解析。   8、修改PHP设置   如果我们不能访问php.ini文件,有些主机服务商允许我们修改.htaccess文件来改变一些PHP设置,例如,我想生成所上传图片的缩略图,有些主机服务商默认将PHP的内存限制为2MB,显然要生成缩略图是不够用的,因此我要将这个限制改大一点,如增加到16MB,如果要移除内存限制,可以将其设为-1。   为了在.htaccess文件中修改PHP设置,服务器必须启用了AllowOverride Options(或AllowOverride all)选项,如果那样,我们只需要在.htaccess文件中添加下面一行命令即可:   php_value memory_limit 16M

扫描二维码推送至手机访问。

版权声明:本文由博赚恋吧资源站发布,如需转载请注明出处。

本文链接:https://432l.com/post/3840.html

分享给朋友:

相关文章

让网站排名上升的10个方法

网站,要带来利润,如果失去了利益,那这个网站也就失去了作用,最简单的方法,就是使自己的网站,在搜索里排名靠前,但在亿万网页中,一个网站在搜索引擎里的排名排到第三页以后去了的话,基本就没什么效果可言了,那如何才能靠前呢,本人虽然做网站时间不长,也谈点自己的心得,供大家参考。   1.首先要定位好自己的网站,清楚自己的网站提供什么,提供给什么样的人群的。这里讲的是关键词的选择,是排名之第一要素。选错关...

网站提交入口及网站优化工具

 以下是可以快速提交到中文各大搜索引擎的工具:http://db.sohu.com/regurl/regform.asphttp://www.yisou.com/search_submit.htmlhttp://www.google.com/intl/zh-CN/add_url.htmlhttp://service.chinasearch.com.cn/NetSearch/user_re...

恋吧偶见URLfan—通过RSS Feeds 进行网站排名跟踪

URLfan是一个网站排名跟踪工具(URL tracking tool ),以url地址在他们所索引的 RSS feeds中的出现次数为主要依据。你也可以键入你的URL 看在URLfan's的数据库中是什么结果。URLfan 当前跟踪285,000多个feeds。网站url经常出现在在博客世界(blogosphere)一定程度上反映了该网站的流行度,而他们对这项反映实时跟踪的计划正在进展之中...

让博客变美,还能赚点零花钱的工具你见过没?

今天,站长在自己的blogbus上转悠,发现一个很有趣的blog工具-blogdeco,装扮博客很漂亮,还能通过 赚点零花钱,详情如下:          由国内知名的ISP业者So-net与日本最新流行的博客小玩意(blogtool)门户网站「BlogDeco」所合作推出的 『BlogDeco中文...

Easy to Hide —WP插件:让你评论后再看我的东东!

            站长也在经营我另外的一个WP的英文博客站blog.blog.fanyongzhuji.com,四处的浏览些插件,发现了一个比较好的插件,不需要用户注册——因为这对部分用户来说太麻烦了,可是也不能让那些好的资源不能尽让浏览者不费吹灰之力连声谢谢...

RSS聚合程序集合大全

最进门户通的空间服务得到改善了,传说中的广告分成也开始启动了,起先站长就拿着一个已经备案米52s.net.ru申请了门户通空间。一直没有使用上,今天想想还是利用些好。就找了一些 RSS聚合程序集合。之所以选择RSS聚合,是因为我想一次加入RSS后,以逸待劳。省的天天更新网站了,哪有那么多时间去经营呢?1、Tiny Tiny RSS首先说说在搜索“RSS聚合程序”时&ldqu...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。