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文件。

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

linux apache htaccess,Apache下htaccess的配置使用详解相关推荐

  1. linux python乱码_linux下python中文乱码解决方案详解

    linux下python中文乱码解决方案详解 发布时间:2020-09-06 20:24:49 来源:脚本之家 阅读:68 1. 场景描述 linux服务器下安装了Anaconda3,执行Pyhton ...

  2. dd linux 尾部添加0_Linux 下的dd命令使用详解(摘录)

    一.dd命令的解释 dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换. 注意:指定数字的地方若以下列字符结尾,则乘以相应的数字:b=512:c=1:k=1024:w=2 参数注释: 1. ...

  3. dd linux 尾部添加0_linux下的dd命令使用详解

    一.dd命令的解释 dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换. 注意:指定数字的地方若以下列字符结尾,则乘以相应的数字:b=512:c=1:k=1024:w=2 参数注释: 1. ...

  4. Linux学习总结(37)——CentOS7下Firewall防火墙配置用法详解

    centos 7中防火墙是一个非常的强大的功能了,但对于centos 7中在防火墙中进行了升级了,下面我们一起来详细的看看关于centos 7中防火墙使用方法. FirewallD 提供了支持网络/防 ...

  5. Windows下SVN权限配置过程详解

    本节讲解一下Windows下SVN权限配置说明,针对的是一个目录下多库的情况,下面是具体的介绍,希望通过本文的学习,你能够对SVN权限配置问题有更加深刻的认识. 1.本文档适用于对Subvesion的 ...

  6. linux中apache配置文件在哪,linux网站服务Apache的安装与配置方法详解

    这篇文章介绍下linux网站服务apache的安装与配置方法,包括挂载光盘,安装http服务,管理httpd服务,httpd的配置文件几大部分.具体详情可以参考下文. 1.挂载光盘 自己习惯将光盘挂载 ...

  7. Apache+PHP配置过程详解

    Apache+PHP配置过程详解 经过两晚上的奋斗终于将Apache配置PHP成功,安装配置过程中走了不少弯路,特记录之. 1.Apache配置PHP个人认为首先要注意的是Apache和PHP的版本信 ...

  8. Linux系统下ifconfig和route配置网络详解

    Linux系统下ifconfig和route配置网络详解 ifconfig和route合用于配置网络(ip命令综合二者功能,此处不讲),通常在前者设置好ip地址等信息后,采用route命令配置路由.( ...

  9. linux下crontab allow,【Python】Linux crontab定时任务配置方法(详解)

    CRONTAB概念/介绍html crontab命令用于设置周期性被执行的指令.该命令从标准输入设备读取指令,并将其存放于"crontab"文件中,以供以后读取和执行.linux ...

最新文章

  1. 今天安装VisualSVN 不小心删掉了安装目录,再次安装 修改 移除提示UninstallWMISchemaExecute (0x8004401e) when updating VisualSV
  2. ASP.NET MVC 入门3、Routing
  3. 有趣但是没有用的linux命令
  4. ImportError: cannot import name ‘image‘ from ‘PIL‘ (C:\ProgramData\Anaconda3\lib\site-packages\PIL\_
  5. 为什么大厂都用DevOps呢?我来告诉你
  6. caj转pdf_CAJ转PDF文件,这恐怕是最全的方法总结了!
  7. SAP 电商云 Spartacus UI product 明细页面的路由配置
  8. 【笛卡尔树】【树状数组】Beautiful Pair(P4755)
  9. 实现一个行内三个div等分_css 实现等分布局
  10. 深圳计算机免考申请在哪,深圳自考申请免考要什么条件
  11. java 系统临时目录_在java中创建临时文件夹
  12. 2020年10月份电脑选购计划
  13. Dython 容联云的一个测试短信验证码
  14. 如何通过组策略控制远程主机空闲时间自动断开并注销
  15. 大数据推荐算法概念简述
  16. 动手学区块链学习笔记(二):区块链以及工作量证明算法
  17. 单片机C51使用两个按键控制继电器开关通断
  18. HarmonyOS开发详解(一)——带你全面认识新一代万物联网的鸿蒙智能终端
  19. H5实现聚合支付及踩坑
  20. 简单ARM指令集介绍

热门文章

  1. 快速搭建react项目
  2. css超出部分省略(单行、多行,多种方法实现)
  3. 【每日早报】2019/0605
  4. 梅科尔工作室-牛泽-鸿蒙笔记1
  5. Python计算器简单程序
  6. ## 从虚拟机栈的角度看i++和++i
  7. shell编程第三讲
  8. 年底前建设6000个5G基站,济南要实现5G网络全覆盖
  9. 学前教育怎么利用计算机思维,在早期教育中,培养孩子计算思维的4个方法
  10. 【沁恒WCH CH32V307V-R1开发板两路ADC读取实验】