.htaccess文件(或者"分布式配置文件")提供了针对目录改变配置的方法, 即,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以做用于此目录及其全部子目录。做为用户,所能使用的命令受到限制。管理员能够经过Apache的AllowOverride指令来设置。
Unix、Linux系统或者是任何版本的Apache Web服务器都是支持.htaccess的,可是有的主机服务商可能不容许你自定义本身的.htaccess文件。
启用.htaccess,须要修改httpd.conf,启用AllowOverride,并能够用AllowOverride限制特定命令的使用。若是须要使用.htaccess之外的其余文件名,能够用AccessFileName指令来改变。例如,须要使用.config ,则能够在服务器配置文件中按如下方法配置:AccessFileName .config 。
笼统地说,.htaccess能够帮咱们实现包括:文件夹密码保护、用户自动重定向、自定义错误页面、改变你的文件扩展名、封禁特定IP地址的用户、只容许特定IP地址的用户、禁止目录列表,以及使用其余文件做为index文件等一些功能。php
DirectoryIndex zxg.html #改变默认文件 RewriteEngine On #打开或关闭运行时刻的重写引擎,设置位置:服务器配置, 虚拟主机, 目录.htaccess '-d' (是一个目录[directory]) 将TestString视为一个路径名并测试它是否存在并且是一个目录 '-f' (是一个常规的文件[file]) 将TestString视为一个路径名并测试它是否存在并且是一个常规的文件 '-l' (是一个符号链接[link]) 将TestString视为一个路径名并测试它是否存在并且是一个符号链接 redirect|R [=HttpCode] (强制重定向 redirect) (使新的URL成为一个URI) 为前缀的Substitution能够强制性执行一个外部重定向。 若是code没有指定,则产生一个HTTP响应代码302(临时性移动)。 注意: 在使用这个标记时,必须确保该替换字段是一个有效的URL last|L (最后一个Url规则的重写last) 当即中止重写操做,并再也不应用其余重写规则。这个标记能够阻止当前已被重写的URL为其后继的规则所重写 'forbidden|F' (强制URL为被禁止的 forbidden) 强制当前URL为被禁止的,即,当即反馈一个HTTP响应代码403(被禁止的) 'nocase|NC' (忽略大小写 no case)它使Pattern忽略大小写,即, 在Pattern与当前URL匹配时,'A-Z' 和'a-z'没有区别。
#注意,#只能放在句首,下面句尾的#实际应用要删除掉 #改变默认文件 DirectoryIndex zxg.html #伪静态 RewriteEngine On #打开或关闭运行时刻的重写引擎,设置位置:服务器配置, 虚拟主机, 目录.htaccess ReWriteRule ^(\d+)_(\d+)\.html news.php?cid=$1&aid=$2 [NC,R=301,L] #301定向,不区分大小写 #访问的不是一个文件或目录的时候就跳转到一个404.html RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d ReWriteRule .* 404.html [L] #去掉index.php RewriteCond $1 !^(index\.php|images|robots\.txt) #任何非 index.php、images 和 robots.txt 的 HTTP 请求都被指向 index.php。 RewriteRule ^(.*)$ /index.php/$1 [L] #防盗链 RewriteCond %{HTTP_REFERER} !^$ #若是来源地址不为空 RewriteCond %{HTTP_REFERER} !^http://web1.com #若是不是以http://web1.com开头 RewriteCond %{REQUEST_FILENAME} .*\.(jpg|jpeg|gif|png) [NC] #若是访问的是图片 ReWriteRule .* no.png [L] #就定向到no.png上面去
1.注意它的顺序是从上到下,符合某一条件就不走下面条件;因此在写伪静态的时候要考虑这个前后顺序;
2.#注释号只能放在句首,不能放在句尾;
3.不须要重启Apache,当即生效;html