●自定义错误页php
.htaccess的一个应用是自定义错误页面,这将使你能够拥有本身的、个性化的错误页面(例如找不到文件时),而不是你的服务商提供的错误页或没有任何页面。这会让你的网站在出错的时候看上去更专业。你还能够利用脚本程序在发生错误的时候通知你(例如当找不到页面的时候自动Email给你)。html
你所知道的任何页面错误代码(像404找不到页面),均可以经过在.htaccess文件里加入下面的文字将其变成自定义页面:
ErrorDocument errornumber /file.html
举例来讲,若是个人根目录下有一个notfound.html文件,我想使用它做为404 error的页面:
ErrorDocument 404 /notfound.html
若是文件不在网站的根目录下,你只须要把路径设置为:
ErrorDocument 500 /errorpages/500.html
如下是一些最经常使用的错误:
401 – Authorization Required 须要验证
400 – Bad request 错误请求
403 – Forbidden 禁止
500 – Internal Server Error 内部服务器错误
404 – Wrong page 找不到页面
接下来,你要作的只是建立一个错误发生时显示的文件,而后把它们和.htaccess一块儿上传。浏览器
●.htaccess命令安全
一、禁止显示目录列表
有些时候,因为某种缘由,你的目录里没有index文件,这意味着当有人在浏览器地址栏键入了该目录的路径,该目录下全部的文件都会显示出来,这会给你的网站留下安全隐患。
为避免这种状况(而没必要建立一堆的新index文件),你能够在你的.htaccess文档中键入如下命令,用以阻止服务器
目录列表的显示:
Options -Indexes网站
二、阻止/容许特定的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
不过这并不影响脚本程序使用这个目录下的文档。ui
三、替换index文件
也许你不想一直使用index.htm或index.html做为目录的索引文件。举例来讲,若是你的站点使用PHP文件,你可能会想使用 index.php来做为该目录的索引文档。固然也没必要局限于“index”文档,若是你愿意,使用.htaccess你甚至可以设置 foofoo.balh来做为你的索引文档!
这些互为替换的索引文件能够排成一个列表,服务器会从左至右进行寻找,检查哪一个文档在真实的目录中存在。若是一个也找不到,它将会把目录列表显示出来(除非你已经关闭了显示目录文件列表)。
DirectoryIndex index.php index.php3 messagebrd.pl index.html index.htmspa
四、重定向(rewrite)
.htaccess 最有用的功能之一就是将请求重定向到同站内或站外的不一样文档。这在你改变了一个文件名称,但仍然想让用户用旧地址访问到它时,变的极为有用。另外一个应用(我发现的颇有用的)是重定向到一个长URL,例如在个人时事通信中,我可使用一个很简短的URL来指向个人会员连接。如下是一个重定向文件的例子:
Redirect /location/from/root/file.ext http: //minidx.com/new/file/location.xyz
上述例子中,访问在root目录下的名为oldfile.html能够键入:
/oldfile.html
访问一个旧次级目录中的文件能够键入:
/old/oldfile.html
你也可使用.htaccess重定向整个网站的目录。假如你的网站上有一个名为olddirectory的目录,而且你已经在一个新网站http: //minidx.com/newdirectory/上创建了与上相同的文档,你能够将旧目录下全部的文件作一次重定向而没必要一一声明:
Redirect /olddirectory http: //minidx.com/newdirectory
这样,任何指向到站点中/olddirectory目录的请求都将被从新指向新的站点,包括附加的额外URL信息。例若有人键入:
http: //minidx.com/olddirecotry/oldfiles/images/image.gif
请求将被重定向到:
http: //minidx.com/newdirectory/oldfiles/images/image.gif
若是正确使用,此功能将极其强大。htm
2、.htaccess文件的书写blog
在网站根目录下创建一个文件,名称是.htaccess,书写方式:
RewriteEngine on #开启重写
RewriteRule ^/$ index.php #表示用“/”就能够访问index.php
RewriteRule ^about_(d*)/$ about/about.php?id=$1 #表示可使用about_22/访问到about/about.php?id=22页面。注意$前面的“/”
RewriteRule ^about_(d*).html$ about/about.php?id=$1 #表示可使用about_22.html访问到about/about.php?id=22页面RewriteRule ^news_(d*)_(d*).html$ news/news.php?id=$1&page=$2 #表示可使用news_11_2.html访问到news/news.php?id=11&page=2页面。$1表示第一个参数,$2表示第二个参数
从上面能够看出,若是咱们有下面的连接
<a href="/about_22/">关于咱们</a>
那么咱们访问到的页面与使用下面访问的页面同样
<a href="/about/about.php?id=22">关于咱们</a>
其实,用前一种访问方式最终仍是会隐式转换成后一种方式,只是在地址栏不显示罢了