初学者.htaccess指南

  • Posted on
  • by

.htaccess文件为我们提供了配置目录的方法。这个文件在Apache服务器和Linux/Unix服务器都能很好的工作。而且对基于Windows系统的Apache服务器也有用。

开发者,网站所有者和站长们可以通过使用.htaccess文件做很多事。比如:

*禁止目录被浏览
*将访问者从某一页或者某一目录重定向
*对目录密码保护
*改变某一目录的索引页面
*防止网站图片盗链

由于.htaccess文件允许我们改变每一目录的基础,下面是.htaccess文件可以放置的目录:

/.htaccess [网站根目录]
/content/.htaccess [(content)内容目录]
/content/html/images/.htaccess [图片文件夹]

idea: 在.htaccess文件中的命令将影响当前目录及其子目录,你可以将.htaccess文件置于根目录,这样就可以影响整个网站。

idea: 在你打算对.htaccess文件( 如果你有的话)做本文所提到的任何改变之前,请做好备份。我不对以下任何改变的后果负责。

与.htaccess文件共事

对于创建和编辑目的,一个普通的文本编辑器比如记事本就可以了。另外,你可以免费下载PSPad用来编辑。为了能在FTP软件中看到文件,你必须设置FTP客户端以看到远程服务器的隐藏文件[对于你的本地系统也是同样的道理]。当编辑完成的时候,可以在windows中将文件另存为双引号的文件。[将文件另存为“.htaccess”]。这样可以将文件另存为.htaccess而不会改变内容。我想你很理解这些这些说明,那么让我们继续看一些例子以了解.htaccess文件的用法。

允许/禁止目录被浏览

如果允许目录浏览,当人们打开你的没有索引页面的网站的链接时候,看到的是所有的文件和文件夹。为了禁止目录被浏览,只要将下面的代码放到你的.htaccess文件中。

IndexIgnore */*

很多空间商公司,默认禁止目录被浏览并且会提示。如果你想打开这种功能,将下面几行代码放到.htaccess文件中。

Options +Indexes

将访问者从某一页面或者目录重定向到其他地方

很简单。看看以下的例子,将类似代码放到你的根目录下的.htaccess文件,其它的是就可以自动去做了。[记住使用永久的关键词以告诉搜索引擎,老的链接已经移到新链接了]。

语法: Redirect permanent [old directory or file name][space][new directory or file name]

Redirect permanent /olddirectory /newdirectory
Redirect permanent /olddirectory /somedirectory/newdirectory
Redirect permanent /oldhtmlfile.htm /newhtmlfile.htm
Redirect permanent /oldhtmlfile.htm http://your-domain.com/newhtmlfile.htm

以上的语法是允许的。只要记住将file/directory名字根据实际进行修改。

改变网站默认的索引页面

几乎每一个空间商都会在服务器设置中把index.htm, index.html, index.php, index.asp, default.asp, default.html设置成默认的索引文件。所以,如果你的网站或者目录没有和上面列出相符的文件,让你的访问者看到的将是一系列文件和文件夹[通过目录浏览],也可能什么也看不见。为了改变网站或者目录默认的索引页,将下面的代码放到根文件夹下面的.htaccess文件或者你想改变索引文件的相关目录中。

DirectoryIndex homepage.htm
DirectoryIndex somepage.htm

多个文件名之间可以用空格隔开,这样就会按顺序将所有列出的文件列为可能的索引文件。也就是说,如果在.htaccess文件中找到一个和你列出中的文件名相符的的文件[按照给出的顺序],那么这个这个文件就会被当作目录中的索引页面。以下多个名字的做法也是允许的:

DirectoryIndex homapage.html somepage.html myindexpage.html anything.html

idea: 记住,每一个入口只能写在一行。

防止盗链

如果你的网站包含别人链接向你的图片,你就要为这些多余的带宽付费,那么加入下面几行就可以防止任何的盗链。很多空间商公司都在控制面板提供了这种功能,比如CPanel。这一功能要求你的服务器上的Apache提供了mod_rewrite功能。

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?your-domain.com/.*$ [NC]
RewriteRule .(gif|jpg)$ - [F]

在上面的代码中,将[your-domain]用你真实的域名代替[没有www],对于(www.\),用实际的子域名代替(sub-domain.\)。

禁止访问.htaccess文件

没有提到这一部分这篇文章就不完整。为了防止访问者看到你的.htaccess文件,把下面几行放到你的文件中。

[Files .htaccess]
order allow,deny
deny from all
[/Files]
(注意把中括号[ ]改为小括号())
更多的信息和详细文档,请访问Apache网站

来源