linux apache htaccess,Apache下htaccess的配置使用详解

Apache下htaccess的配置使用详解

看到群里很多前辈都在讨论.htaccess的用法,自己之前也小用过,只做了404的重定向,当然.htaccess的功能远不止这些,他还可以帮助我们做很多(比如:自定义错误页面、禁止目录被浏览、地址重定向、目录保护、改变默认首页索引、防止网站图片盗链等)。今天我在本地localhost将apache下htaccess做了详细的整理和测试。

为什么要使用.htaccess?

oophper.com答:很多网站都是租用服务器和虚拟主机的,其服务器的配置我们并不能改。当我们有特殊要求时,比如定义最简单的404(页面未找到)的错误页面,我们就只能通过apache配置的扩展配置(或者说是子配置)来更改扩展原服务器的配置。这个配置就是.htaccess文件,他想但与apache下的http.conf文件的延续。

使用.htaccess的条件

oophper.com答:要在服务器上使用.htaccess文件配置,必须要求服务器开通对于的支持。两个条件:1.mod_rewrite模块开启;2. AllowOverride All

要使用.htaccess,apache下http.conf该如何配置

oophper.com答:很简单,只需要改两个地方:

将工作目录下的AllowOverride None改为AllowOverride All。具体位置为你可以在http.conf下搜索AllowOverride controls what directives may be placed in .htaccess files.该句下面的那个AllowOverride就是要改的位置。

开启.mod_rewrite模块。将#LoadModule rewrite_module modules/mod_rewrite.so前的#去掉即可。

.htaccess实现各种功能的配置写法

自定义错误页面

oophper.com配置解答:

写法:ErrorDocument错误代码 空格/目录名/文件名.扩展名

例子:ErrorDocument 404 /404.html

ErrorDocument 500 /help/errors/internalerror.html

这样当文件未找到(404)或者服务器错误(500)时就会自动跳转至写好的提示页,有助于网站的用户体验。至少不会显示浏览器默认的提示信息,也可以防止服务器的信息泄露,既安全又友好。

禁止/允许目录被浏览

oophper.com配置解答:

写法:IndexIgnore */*

很多服务器本身就已经禁止了目录被浏览并会提示。如果你在建站初期调试,想要开通此功能也未尝不可。只需要添加一句:

写法: Options +Indexes

页面或网址重定向

oophper.com配置解答:

写法1:Redirect permanent [old directory or file name][空格][new directory or file name]

其中permanent(永久)是为了告诉搜索引擎,老的链接已经移到新链接了。

写法2:Redirect /旧页面地址[空格]新页面的地址

例子:

Redirect permanent /oldhtmlfile.htm

这可以帮助我们将用户引导到我们想让其看到的页面,也可以用作域名的重定向。有时候某些目录我们不想对用户开放,比如cache目录禁止用户直接输入地址访问,我们就可以用htaccess的重定向配置将其直接带到首页。

改变默认首页索引页

oophper.com配置解答:

写法:

DirectoryIndex homepage.htm

DirectoryIndex somepage.htm

多个文件名之间可以用空格隔开,这样就会按顺序将所有列出的文件列为可能的索引文件,记住,每一个入口只能写在一行.

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

防止网页图片被盗连

oophper.com配置解答:

很多服务器供应商都是限流量和限cpu的。特别是流量,每个月超过了限制的流量就需要支付额外的大洋,而自己网站的图片被盗链这就相当于别人耗了你的流量却并没有给你带来流量。那是相当郁闷的。自然要防止被盗连。同时有些隐私比如用户的相册如果被盗连了可能泄露隐私,这也是不好的。你可以看到百度空间,sina博客,qq空间均作了防盗链的处理。

写法:

RewriteEngine on

RewriteCond %{HTTP_REFERER} !^$

RewriteCond %{HTTP_REFERER} !^http://(www\.)?your-domain.com/.*$ [NC]

RewriteRule .(gif|jpg)$ - [F]

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

或者用图片代替之,这样别人盗链的图片就会显示你所要提示的图片。

RewriteEngine on

RewriteCond % !^$

RewriteCond % !^http://(www/.)?域名.com/.*$ [NC]

RewriteRule /.(gif|jpg)$域名.com/替代图片文件名[R,L]

使用.htaccess文件的不足

1、性能AllowOverride启用了使用.htaccess文件,则apache需要在每个目录中查找.htaccess文件。因此会导致性能下降。另外对每一个请求,都需要读取一次.htaccess文件,还有apache必须在所有上级的目录中查找.htaccess文件以使有效的指令都起作用,比如如果客户端请求/www/htdocs/help中的页面。服务器必须查找/.htaccess

/www/.htaccess

/www/htdocs/.htaccess

/www/htdocs/help/.htaccess

四个额外文件(即使这些文件都不存在,当然你可以仅仅允许根目录使用.htaccess文件),也就是说目录深度越深,则访问的额外文件越多,性能越低了。

2、安全由于在/www/htdocs/help下面的.htaccess文件中放置指令与在主配置文件中中放置相同的指令是完全等效的,这样允许用户自己修改服务器配置,可能就会导致某些不愿意发生的意想不到的修改,这样就会造成服务器安全问题。这样你就必须考虑是否设置AllowOverride None来完全禁用.htaccess文件。

-----原创,转载请注明

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值