在windows系统下,下无法将 htaccess.txt 重命名为 .htaccess,怎么办?很简单,用记事本打开,htaccess.txt, 然后再选择"另存为"的方式,就可以重命名为.htaccess了 .htaccess 文件是Apache服务器中最常用的一个配置文件,它负责相关目录下的网页配置。通过 htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、 配置索引入口等功能。
新增环境变量
<VirtualHost *:80> ServerName www.demo.com SetEnv APP_ENV DEV
1. 开启网站的图片防盗链功能
如果网站的流量有限,那么图片防盗链是非常必要的。不仅可以减少流量浪费,而且可以减轻服务器负担。开启图片防盗链功能需要在htaccess文件中加入以下代码:
RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://(www\.)?allow1.com(/)?.*$ [NC] RewriteCond %{HTTP_REFERER} !^http://(www\.)?allow2.com(/)?.*$ [NC] RewriteRule .*\.(gif|jpg|jpeg|bmp|png)$ [R,NC,L]
上面的代码中,allow1.com与allow2.com分别是允许访问网站图片的域名,后面的baidu.com则是替换成的目标图片地 址。上面还包含了图片文件的后缀参数,可以自行更改。如果通过htaccess在线生成器生成此段代码,仅仅需要填写几个允许访问的域名(不带www与 http),然后再填写好准备替换的图片地址。
2、自定义404、500等错误返回页
如果你不希望网站在找不到网页的时候出现“404该页无法显示”,就试试自己定义一个找不到网页的出错页面吧!需要在htaccess文件中加入
ErrorDocument 404/404.htm
前面的404是其错误代号,后面的/404.htm是自己定义的404页面的路径。需要注意的是,如果这个404页面的大小小于512B,则 IE会忽略此页面,也就不会生效了。后面的参数需要使用网站相对路径。在htaccess在线生成程序中,请切换到“自定义错误页面”选项卡,然后在 “404(未找到)”后面的输入框中输入你的错误页面地址即可。在线生成工具还可以处理其它类型的错误,以此类推即可。请预先将404错误页面制作好上传 到网站目录。
4、默认入口页面
有些虚拟主机就是另类,不适用默认的文件名,或顺序非主流。那么通过以下的代码就可以自己定义这个页面的文件名了。比如index.htm 、default.php等等:
DirectoryIndex index.php
这行代码将index.php作为默认首页。其他页面请直接替换例子中的index.php。如果网站有多个页面需要作为首页,请按照 DirectoryIndex index.html index.htm index.php的格式编写文件。这样优先级的顺序为 index.html > index.htm > index.php此项设置在htaccess生成器中,仅仅需要你依次填入首页的文件名即可,非常方便。
5、通过htaccess开启网站图片缓存
某些虚拟主机限制了网站的流量,如果浏览器每次都从服务器下载最常用的图片文件,将会浪费大量的带宽。因此可以开启图片缓存,浏览器在缓存过期前将会自动从缓存区载入图片文件。此功能在文件中加入以下代码:
Header set Cache-Control "max-age=3600"
需要注意的是,上面的3600单位为秒,即超时时间,上图中的gif等为图片文件后缀,表示对这些文件生效。如果使用自动生成工具,为了开启此选项,请将“开启站点的图片缓存”选项卡选择一个超时时间。目前有十分钟、一小时、一天等选项可供设置。
6针对URL相对路径的禁止访问:
<Location /dir/> Order allow,deny Deny from all </Location>
7、固定301、302网页重定向
由于页面转移位置造成的404错误是我们大家都非常头痛的问题,但我们只需要做一个301的重定向就会完全解决这个问题了。在htaccess文件中加入以下代码:Redirect permanent /old.htm http://www.php100.com前面一个参数使用相对路径,也可以使用目录名,后一个参数必须填写完整网址。这样才能生效,并且不出错误。在SEO中,搜索引擎也很快就会按照你的设置,将收录的网页更新。
8.阻止/允许特定的IP地址
某 些情况下,你可能只想允许某些特定IP的用户可以访问你的网站(例如:只允许使用特定ISP的用户进入某个目录),或者想封禁某些特定的IP地址(例如: 将低级用户隔离于你的信息版面外)。当然,这只在你知道你想拦截的IP地址时才有用,然而现在网上的大多数用户都使用动态IP地址,所以这并不是限制使用 的常用方法。
你可以使用以下命令封禁一个IP地址:
deny from 000.000.000.000
这里的000.000.000.000是被封禁的IP地址,如果你只指明了其中的几个,则可以封禁整个网段的地址。如你输入210.10.56.,则将封禁210.10.56.0~210.10.56.255的所有IP地址。
你可以使用以下命令允许一个IP地址访问网站:
allow from 000.000.000.000
被允许的IP地址则为000.000.000.000,你可以象封禁IP地址一样允许整个网段。
如果你想阻止所有人访问该目录,则可以使用:
deny from all
不过这并不影响脚本程序使用这个目录下的文档。
9.密码保护
Introduction 介绍
尽管有各种各样的.htaccess用法,但至今最流行的也可能是最有用的做法是将其用于网站目录可靠的密码保护。尽管JavaScript等也能做到,但只有.htaccess具有完美的安全性(即访问者必须知晓密码才可以访问目录,并且绝无“后门”可走)。
密码保护的.htaccess文件
利用.htaccess将一个目录加上密码保护分两个步骤。第一步是在你的.htaccess文档里加上适当的几行代码,再将.htaccess文档放进你要保护的目录下:
AuthName “Section Name” AuthType Basic AuthUserFile /full/path/to/.htpasswd Require valid-user
你可能需要根据你的网站情况修改一下上述内容中的一些部分,如用被保护部分的名字”Members Area”,替换掉“Section Name”。
/full/parth/to/.htpasswd则应该替换为指向.htpasswd文件(后面详述该文档)的完整服务器路径。如果你不知道你网站空间的完整路径,请询问一下你的系统管理员。
密码保护的.htpasswd文件
目录的密码保护比.htaccess的其他功能要麻烦些,因为你必须同时创建一个包含用户名和密码的文档,用于访问你的网站,相关信息(默认)位于一个名 为.htpasswd的文档里。像.htaccess一样,.htpasswd也是一个没有文件名且具有8位扩展名的文档,可以放置在你网站里的任何地方 (此时密码应加密),但建议你将其保存在网站Web根目录外,这样通过网络就无法访问到它了。
输入用户名和密码
创建好.htpasswd文档后(可以通过文字编辑器创建),下一步是输入用于访问网站的用户名和密码,应为:
username:password
“password”的位置应该是加密过的密码。你可以通过几种方法来得到加密过的密码:一是使用一个网上提供的permade脚本或自己写一个;另一个 很不错的username/password加密服务是通过KxS网站,这里允许你输入用户名及密码,然后生成正确格式的密码。
对于多用户,你只需要在.htpasswd文档中新增同样格式的一行即可。另外还有一些免费的脚本程序可以方便地管理.htpasswd文档,可以自动新增/移除用户等。
访问网站
当你试图访问被.htaccess密码保护的目录时,你的浏览器会弹出标准的username/password对话窗口。如果你不喜欢这种方式,有些脚 本程序可以允许你在页面内嵌入username/password输入框来进行认证,你也可以在浏览器的URL框内以以下方式输入用户名和密码(未加密 的):
http://username:password@www.website.com/directory/
10.禁止文件访问
<FilesMatch (.*)\.htm$> order allow,deny deny from all </FilesMatch>
现在服务器将只允许访问模版目录下的非htm文件,访问htm文件时会提示403错误
此外,htaccess还可以实现比如MIME文件类型修改、域名重定向等功能,因此,能充分利用好该文件将能让你的网站建设更加得心应手。
RewriteCond 重写规则执行条件
语法: RewriteCond TestString CondPattern
生效域: server config, virtual host, directory, .htaccess
特别的上面的 TestString, 可提供反向引用. 引用模式为: %N 其中N为(0 <= N <=9), 引用当前若干RewriteCond条件中最后符合的条件中的分组成分, 也就是括号里的内容.不过用到的不多. 反向应用多在RewriteRule里常用.
RewriteCond 语法中的 TestStrng 为要被检查的内容, CondPattern 是进行匹配的规则, 它是一个兼容Perl风格的正则表达式和一些其他的特有字符属性. 这里介绍一下.
第一个: ! (感叹号) 表示否的意思. 比如一个条件: 判断访问此页面的上一页URL是否包含 sex 字符的话可以用这样: RewriteCond %{HTTP_REFERER} !(sex)
第二个: < 就是小于的意思, TestString < CondPattern.
第三个: > 就是大于于的意思, TestString < CondPattern.
第四个: = 相等的意思. <, >, = 三个和通常程序语言使用的 <, >, = 功能类似.
第五个: -d 是否是一个目录. 判断TestString是否不是一个目录可以这样: !-d
第六个: -f 是否是一个文件. 判断TestString是否不是一个文件可以这样: !-f
第七个: -s 是否是一个正常的有大小的文件. 判断TestString是否不是一个正常的有大小的文件可以这样: !-s
第八个: -l 是否是一个快捷方式文件. 判断TestString是否不是一个快捷方式文件可以这样: !-l
第九个: -x 是否是一个文件并且又执行权限. 判断TestString是否不是一个文件并且又执行权限可以这样: !-x
第十个: -F 检查TestString是否是一个合法的文件,而且通过服务器范围内的当前设置的访问控制进行访问。这个检查是通过一个内部subrequest完成的, 因此需要小心使用这个功能以降低服务器的性能。
第十一个: -U 检查TestString是否是一个合法的URL,而且通过服务器范围内的当前设置的访问控制进行访问。这个检查是通过一个内部subrequest完成的, 因此需要小心使用这个功能以降低服务器的性能.
另外: RewriteCond 指令后面可带 Flag, 现在只要2个可用, 一个是 NC|nocase, 不区分大小写的意思. 一个是 OR|ornext 表示连接下一个条件的意思.
RewriteCond 实际需要使用情况比如要判断一个条件成真的时候才执行相关的重写操作. 紧接着它下面的 RewriteRule 总是在RewriteCond 条件判断为真的时候才被执行.
例.赛卡软件近期更换了域名,新域名为www.sicasoft.com, 更加简短好记。这时需要将原来的域名ss.kiya.cn, 以及论坛所在地址ss.kiya.cn/bbs/定向到新的域名,以便用户可以找到,并且使原来的论坛 URL 继续有效而不出现 404 未找到,比如原来的http://ss.kiya.cn/bbs/tread-60.html, 让它在新的域名下继续有效,点击后转发到http://bbs.sicasoft.com/tread-60.html,而其他网页,如原先的http: //ss.kiya.cn/purchase不会到二级域名bbs.sicasoft.com/purchase上,而是到 www.sicasoft.com/purchase
按照这样的要求重定向规则应该这样写:
RewriteEngine On RewriteCond %{REQUEST_URI} ^/bbs/ RewriteRule ^bbs/(.*) http://bbs.sicasoft.com/$1 [R=permanent,L] RewriteCond %{REQUEST_URI} !^/bbs/ RewriteRule ^(.*) http://www.sicasoft.com/$1 [R=permanent,L]
Apache mod_rewrite规则重写的标志一览
1) R[=code](force redirect) 强制外部重定向
强制在替代字符串加上http://thishost[:thisport]/前缀重定向到外部的URL.如果code不指定,将用缺省的302 HTTP状态码。
2) F(force URL to be forbidden)禁用URL,返回403HTTP状态码。
3) G(force URL to be gone) 强制URL为GONE,返回410HTTP状态码。
4) P(force proxy) 强制使用代理转发。
5) L(last rule) 表明当前规则是最后一条规则,停止分析以后规则的重写。
6) N(next round) 重新从第一条规则开始运行重写过程。
7) C(chained with next rule) 与下一条规则关联
如果规则匹配则正常处理,该标志无效,如果不匹配,那么下面所有关联的规则都跳过。
8) T=MIME-type(force MIME type) 强制MIME类型
9) NS (used only if no internal sub-request) 只用于不是内部子请求
10) NC(no case) 不区分大小写
11) QSA(query string append) 追加请求字符串
12) NE(no URI escaping of output) 不在输出转义特殊字符,例如:RewriteRule /foo/(.*) /bar?arg=P1\%3d$1 [R,NE] 将能正确的将/foo/zoo转换成/bar?arg=P1=zed
13) PT(pass through to next handler) 传递给下一个处理例如:
RewriteRule ^/abc(.*) /def$1 [PT] # 将会交给/def规则处理
Alias /def /ghi
14) S=num(skip next rule(s)) 跳过num条规则
15) E=VAR:VAL(set environment variable) 设置环境变量
/type.php?typeid=* –> /type*.html /type.php?typeid=*&page=* –> /type*page*.html RewriteRule ^/type([0-9]+).html$ /type.php?typeid=$1 [PT] RewriteRule ^/type([0-9]+)page([0-9]+).html$ /type.php?typeid=$1&page=$2 [PT]
为了安全一般线上服务器都会选择隐藏当前webserver的版本,如何隐藏nginx apache php版本?
1.隐藏php版本号
隐藏方法:vim php.ini添加如下代码 expose_php = Off
2.隐藏nginx版本号
隐藏方法:vim nginx.conf 在http里加入sever_tokens= Off
3.隐藏apache版本号
隐藏方法:vim httpd.ini 添加如下代码
1. ServerTokens = ProductOnly
2. ServerSignature = Off
修改每个配置文件都要重启服务才可以生效。
伪静态配置
1.LoadModule rewrite_module modules/mod_rewrite.so去了注释(去了最前面的#)
2.虚拟改目录配置
<Directory /> Options FollowSymLinks AllowOverride All Order deny,allow Deny from all </Directory>
3.在根目录下建.htaccess(你可以用记事本打,然后另存为就OK了)
4.配制规则(在.htaccess文件中贴上)
RewriteEngine on RewriteBase / RewriteRule ^t_(.*).html$ test.php?id=$1
5.测试地址栏里输入 t_1.html在test.php输出1就对了 。
Apahce 本身可以簡單設置一下無需配置 rewrite:
下面是我的httpd.conf中站點目錄的配置.主要是 Options Indexes FollowSymLinks MultiViews 參數;MultiViews的效果是:如果服务器收到对/some/dir/foo的请求,而/some/dir/foo并不存在,但是如果/some/dir 启用了MultiViews ,则服务器会查找这个目录下所有的foo.* 文件,并有效地伪造一个说明这些foo.* 文件的类型表,分配给他们相同的媒体类型及内容编码,并选择其中最合适的匹配返回给客户
admin指向admin.php
Options +FollowSymLinks RewriteEngine On RewriteRule ^admin/$ admin.php [L]将非特定的重写到index.php
将404重写到index.php
RewriteRule !\.(jpg|png|gif|html|css|js|xml|swf)$ index.php ErrorDocument 404 index.php
相关推荐
CentOS Apache 配置详解 Apache 是一个流行的网页服务器软件,CentOS 也是一个流行的 Linux 发行版。在本文中,我们将详细介绍如何在 CentOS 上配置 Apache,以便实现网页服务器的功能。 一、 Apache 的安装和...
### CentOS 下 Apache 配置多域名或多端口映射详解 #### 一、概述 在 CentOS 系统中,Apache 是一个广泛使用的 Web 服务器软件,它可以用来托管多个不同的网站或应用服务。为了实现这一点,我们需要对 Apache 进行...
Apache 配置负载均衡实现访问请求分流提高访问性能 Apache 配置负载均衡是将所有用户的访问压力分散到多台服务器上,也可以分散到多个 Tomcat 里,提高访问性能。负载均衡的主要目标是将用户的访问请求分流到多个...
一、Apache配置文件基础 Apache的主配置文件通常是`httpd.conf`,位于安装目录下的`conf`子目录中。这个文件包含了服务器的基本设置,如端口监听、服务器根目录、MIME类型定义等。另外,Apache支持使用`.htaccess`...
Apache配置详解 最好的APACHE配置教程 包你满意
从给定的文件信息中,我们可以提取到关于Apache配置文件httpd.conf的多个关键知识点,以下是对这些知识点的详细解析: ### Apache配置文件httpd.conf的重要性 Apache的配置文件httpd.conf是Apache服务器的核心配置...
Apache配置 笔记.doc
Apache配置手册,服务器环境设置。很是很新手使用的一本书。
Linux下Apache配置详解 学习必备
### LoadRunner Apache配置详解 #### 一、LoadRunner与Apache服务器监控 LoadRunner是一款功能强大的负载测试工具,广泛应用于各种Web应用的性能测试之中。它不仅能够模拟大量虚拟用户访问Web应用,还提供了多种...
学习Apache配置的目标是理解Web基本概念,掌握Apache配置指令,包括基本配置、多站点配置、安全和性能优化。此外,熟悉Apache的日常管理命令,如启动、停止和监控,对于维护稳定高效的Web服务至关重要。通过这些知识...
### Apache配置多端口及Apache端口修改方法详解 在多服务器环境或单一服务器上运行多个站点时,正确配置Apache的端口变得至关重要。本文将深入解析如何在Apache中配置多端口,以及如何修改Apache的默认端口,确保您...
在IT领域,Apache配置文件是运维工程师和开发者必须掌握的核心知识点之一。Apache作为全球最流行的Web服务器软件之一,其配置的灵活性和功能的丰富性使其成为处理大量网站和应用程序请求的理想选择。本文将深入解析...
Apache配置详解(最好的APACHE配置教程
本教程将深入探讨Apache配置的各个方面,旨在提供一个全面而详尽的指南,帮助你理解和优化你的Apache服务器。 一、Apache基础 Apache服务器是用C语言编写的,它通过HTTP协议向客户端提供静态和动态内容。Apache的...
Apache配置手册是Web服务器管理员和开发者的重要参考资料,它详尽地介绍了如何安装、配置和管理...通过深入学习和实践这份Apache配置手册,你可以掌握Web服务器的日常管理和高级配置技巧,提升网站的稳定性和效率。
### 使用Apache配置反向代理服务器 #### 一、反向代理的基本概念 反向代理(Reverse Proxy)是一种网络架构模式,其中代理服务器接收来自互联网的请求,并将其转发给内部网络中的真实服务器。处理完请求后,代理...