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

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

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

分享给朋友:

相关文章

推荐一个提高菜鸟博客流量的小工具blogupp

从订阅的博客中发现了这样一个网站-------http://www.blogupp.com。感觉很有意义,推荐一下。它是做什么的呢?简单的说就是帮助您博客获得更多的流量。您可以在您的博客上粘贴相应的代码,从而获得在他人博客上展示你博客的机会。而那些展位就可以为你带来额外的流量,如果你展位足够多的话,那可以估计流量是可观的。是什么让 BlogUpp! 与众不同?不需要注册账号就可以使用不会曝光邮件和...

加入博客聚合,让更多人看到你的博客

博客聚合,博客圈大概是今年年初到现在很火的一个话题。加入这种聚合站有两个优势:1.让更多的人有机会看到你的博客2.让你的链接更多的被搜索引擎抓到 前博客原创qianblogger.com365bloglink是我推荐的比较好的一个聚合站。把自己的博客提交给365bloglink之后,你的文章就会出现在365bloglink首页上面,这样可以让更多的人看到你的博客。365bloglink的注册过程简...

国内博客搬家工具大全

一、和讯博客的“搬家公司”提供博客搬家服务  搬家服务地址:http://hexuncom.blog.hexun.com/306956_d.html  目标对象:新浪博客、搜狐博客、网易部落、TOM博客、MSN Space、天涯社区、中国博客网、中华部落阁、博客中国、博客中国专栏、DoNews、歪酷博客、敏思博客、BlogBUS、BlogDrive、百度空间、mop博客。 ...

z-blog的主题制作技巧与诀窍

1.更新浏览计数在打开单页日志后产生,每刷新一次,计数加1。注意:只有在b_article-single.html有以下及第3步中介绍的代码,浏览计数才有效。在b_article-single.html模板中,你认为合适的位置加入以下代码,<span>标签内显示的就是当前文章的浏览次数。<span id="spn<#article/id#>">...

z-blog 显示评论者的网站链接

在 Z-BLOG 的博客中,有一些模板默认是不显示评论者的网站地址链接的,这样我们要回访起来就比较麻烦。那么我们自己动手修改模板,让它显示链接地址。在修改模板之前,我们先来了解一下相关的文件及数据。1、b_article_comment.html  每条评论内容显示模板;        2、<#article/c...

恋吧推荐的20个最好的免费音乐分享网站

20个最好的免费音乐分享网站 FinetuneGrooveshark Imeem Jango JukeFly Last.fm Musicoveryhttp://musicovery.com/可以设置你的心情和音乐类型,然后可以播放相应的音乐。详细介绍。MySpace Pandora SkreemR 以上部分来源:CnM...

发表评论

访客

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