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

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

admin16年前 (2010-11-29)网站制作573
 .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

分享给朋友:

相关文章

2009年海外Web设计风潮—反 Box 布局

反 Box 布局Smashing Magazine 曾有一篇文章,讲到反 Box 布局。所谓反 Box 布局,就是不再拘泥与传统的 Box 布局模型,而是采用一种更有创意的的布局,然而需要指出,这种创意布局需要非常注意易用性问题,一种新的创意布局需要时间去慢慢成熟。 ...

Web2.0设计生成工具

Web2.0设计生成工具Stripe Designer  Web 2.0 Logo Creator...

Getjar:手机软件下载服务网站

你可以按照以下手机操作平台查找软件: 上面还提供了2007 Getjar评选出的最佳手机应用软件,上面很多软件都很不错,获奖的几个软件分别为:Opera Mini;RDM+ Remote Desktop for Mobiles, Standard version;Dictionary;Army vs. Crime v1.02;Nav4All。相信在Getjar你能找到适合您自己的手机软件。链...

Z-blog标签及注释集合整理

很多人在用zblog ,遇到的问题很多,希望扩展的也很多。对于修改和丰富zblog程序的人来说,它的变量是必须的。它有一个很大的变量系统,如果一个一个去找,累死个人了。我现给这些帖出来,希望对大家有用。<Zblog标签及注释>:本想修改下最近发表那块显示字数的长度的,找了半天没找到在哪里修改,这里这些标签还算是有用,先贴上,以备以后查看。模板类/TEMPLATE1. default.h...

在Google Appengine上安装SDblog

现在有不少人都有了GAE账号了,但是还是有部分人不懂怎么安装SDblog,现在我在这里简单介绍下。第一步:简要说明创建账号相关。         访问http://appengine.google.com/,使用你的Google帐号登录到App Engine管理平台。(如果你还没有Google帐号,请先申请一个)创建一...

看谁在抄袭你的blog,就用copygator

copygator 通过监视博客圈 feed 内容更新,及时告诉你谁在抄袭你的博客内容,一定程度上可以缓解被大量地抄袭。怎么这样说呢,因为,当 copygator 通知你你的 blog 被谁抄袭后,你可以联系抄袭者,一些事情就可以解决了,估计下次他也不会再明目张胆地抄袭。最近在百度和google上搜索了自己介绍的web2.0服务,发现大部分关键词在两个搜索引擎都有极好的排名,相当一部分排在web2...

发表评论

访客

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