深入剖析Linux系统.htaccess文件详细语法使用教程

深入剖析linux系统.htaccess文件详细语法使用教程

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 条件判断为真的时候才被执行.看下面的一个例子:#开启服务器重写模式
RewriteEngine on
#来自 的连接访问本站时都只能访问 test.php 这页.
RewriteCond %{HTTP_REFERER} ()
RewriteRule (.*)$ test.php
#来自 的连接访问本站时都只能访问 newTest.php 这页.
RewriteCond %{HTTP_REFERER} ()
RewriteRule (.*)$ newTest.phpOK, RewriteCond 就介绍到这里了. 其实很简单. 就想程序里的 if() 这样的效果.

下篇详解RewriteRule


本教程依次从以下几个方面介绍.htaccess相关知识。

.htaccess文件使用前提
基本尝试语法介绍。
现学现用,利用正则表达式活学活用。
常见的.htaccess应用举例。
.htaccess实现的一些其他功能。
一、.htaccess文件使用前提
.htaccess的主要作用就是实现url改写,也就是当浏览器通过url访问到服务器某个文件夹时,作为主人,我们可以来接待这个url,具体 地怎样接待它,就是此文件的作用。所有的访问都是通过URL实现,所以.htaccess的作用非同小可。正因为此,所以一般地网站通过设 置.htaccess,通过一个十分友好的url吸引用户进来,然后用.htaccess把用户带到需要访问的位置。

要想使用这个强大功能,就得开启apache里面的重写模块。


其实开启模块大体的步骤都是一样的,无论是Windows和linux。

二、.htaccess基本语法介绍
开启重写引擎 :

RewriteEngine on

设置重写的根目录:

RewriteBase /

— 说明 :因为定义了这个文件夹,所以对应的替换就有了一个参照。

匹配所有符合条件的请求:RewriteCond — 说明:RewriteCond 定义了一系列规则条件,这个指令可以有一条或者多条,只有用户拿来的url符合这些条件之后,我们的.htaccess才开始接待,否则用户就直接自己去 访问所需要的目录了。

举个例子,为了能让搜索引擎更多地抓取我们的网页而避免重复抓,我们通常把没有www的域名重定向到,如下就实现了这个功能:

RewriteEngine OnRewriteCond %{HTTP_HOST}  ^linuxidc\.com$ [NC]RewriteRule ^(.*)$  $1 [R=301,L]

上例便把linuxidc.com 重定向到

%{HTTP_HOST} 是指取得用户访问的URL的主域名 然后空格后面是一个正则表达式匹配,意识就是说是否是 linuxidc.com 。

如果用户访问使用的URL满足所有列出的RewriteCond 提出的条件,那么进行下一步RewriteRule 即开始进行引导,这才开始实现.htaccess文件的重要功能。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wygxpx.html