htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。
Unix、Linux系统或者是任何版本的ApacheWeb服务器都是支持.htaccess的,但是有的主机服务商可能不允许你自定义自己的.htaccess文件。
启用.htaccess,需要修改httpd.conf,启用AllowOverride,并可以用AllowOverride限制特定命令的使用。如果需要使用.htaccess以外的其他文件名,可以用AccessFileName指令来改变。例如,需要使用.config,则可以在服务器配置文件中按以下方法配置:AccessFileName.config。
笼统地说,.htaccess可以帮我们实现包括:文件夹密码保护、用户自动重定向、自定义错误页面、改变你的文件扩展名、封禁特定IP地址的用户、只允许特定IP地址的用户、禁止目录列表,以及使用其他文件作为index文件等一些功能。
1.[root@localhosthtml]#vi.htaccess//在apache根目录下建立一个.htaccess文件内容如下所示:
AuthType Basic
AuthName "zh888.com"
AuthUserFile /etc/httpd/conf/htpasswd
Require valid-user
这里的AuthName指的是要求你输入用户名和密码时的提示信息可以随便写,AuthType表示需要的认证类型,在这个例子中,我只想弹出一个对话框,要求输入用户名和密码,因此设置为Basic,AuthUserFile指的是保存用户名和密码的文件位置,在这个例子中指的是htpasswd文件,位置和我们的htaccess文件相同,Require valid-user指定只有htpasswd文件包含的合法用户才能访问, 也可以写成Require user zh888
2.[root@localhosthtml]#htpasswd -bc htpasswd zh888 123456//在当前目录创建htpasswd文件用户名为zh888密码为123456.
Adding password for user zh888
3.[root@localhosthtml]#vi/etc/httpd/conf/httpd.conf
#
#AllowOverridecontrolswhatdirectivesmaybeplacedin.htaccessfiles.
#Itcanbe"All","None",oranycombinationofthekeywords:
#OptionsFileInfoAuthConfigLimit
#
AllowOverrideAll//修改None为All重启apache服务即可。
遇到的问题在使用ssh客户端创建.htaccess文件的时候,在web认证输入密码的时候老是进不去,原因.htaccess文件问题,可能和搜狗输入法有关系。重新创建.htaccess文件问题解决..htaccess文件和htpasswd文件都可以整合到httpd.conf文件中。为了安全也可以吧htpasswd文件不要放在网站根目录下,可以放在安全的地方指定绝对路径即可。.htaccess应用在网站后台防止别人进入。
本文转自zh888 51CTO博客,原文链接:http://blog.51cto.com/zh888/1324022,如需转载请自行联系原作者