apache重写规则 您所在的位置:网站首页 apache跳转url apache重写规则

apache重写规则

2023-05-29 01:25| 来源: 网络整理| 查看: 265

Aapache重写规则

.htaccess叫分布式配置文件,.htaccess文件的作用在于当浏览器通过uri访问到服务器某个文件夹或文件时,我们可以决定这个uri是否访问uri指定资源或者拒绝访问。并且通过一个十分友好的uri吸引用户进来,并且通过.htaccess文件把用户导向服务器指定的访问位置。它提供了针对目录改变配置的方法——在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。并且子目录中的指令会覆盖更高级目录或者主服务器配置文件中的指令。说的通俗点,他就是:一个更改服务器配置的‘文本’文件。一般来说,如果你的虚拟主机使用的是Unix或Linux系统,或者任何版本的Apache网络服务器,从理论上讲都是支持.htaccess的。他可以实现包括:文件夹密码保护、用户自动重定向、自定义错误页面、改变你的文件扩展名、封禁特定IP地址的用户、只允许特定IP地址的用户、禁止目录列表,以及使用其他文件作为index文件等等。

前提

必须开启apache里面的重写模块!

第一步,首先进入apache安装目录下,找到httpd.conf配置文件,并打开httpd.conf。 # 找到下面这行代码,取消其注释符号 ‘#’。 # LoadModule reqtimeout_module libexec/apache2/mod_reqtimeout.so

第二步,找到所有的AllowOverride denied并改为AllowOverride all——意思就是支持重写。

第三步,重启apache服务器。

.htaccess基本语法介绍 基本语句 语句 含义 RewriteEngine on 开启apache重写功能 RewriteBase / 设置重写根目录 RewriteCond rewrite condition 重写条件,匹配符合条件——正则的请求 RewriteRule 重定向 RewriteBase RewriteEngine on RewriteBase / RewriteRule ^(.*)\.htm$ $1.php [R,NC,L]

RewriteBase定义了重写基准目录。 例如,如果你将虚拟站点设置在/var/www目录下,删除这行将会导致重定向到http://yourdomain.com/var/www/1.php。显然这是找不到的,而且你也不会希望用户看见你的服务器的目录结构。 再举个例子,如果RewriteBase /base/,那么将会重定向到http://yourdomain.com/base/1.php。 对于重写基准目录,我们还可以通过将$1.php变成/$1.php实现直接变换,这时就可以将RewriteBase省略。

RewriteCond说明 语法 【说明 】定义重写发生的条件 【语法】 RewriteCond 【TestString】 【CondPattern】 [flags] 【作用域】 server config, virtual host, directory, .htaccess 【覆盖项】 FileInfo 【状态】 扩展(E) 【模块】 mod_rewrite 注意事项

可以在CondPattern串的开头使用’!'(惊叹号)来指定不匹配。

CondPatterns有若干特殊的变种。除了正则表达式的标准用法,还有下列用法:

‘CondPattern’(词典顺序的大于) 将CondPattern视为纯字符串,与TestString按词典顺序进行比较。如果TestString大于CondPattern则为真。 ‘=CondPattern’(词典顺序的等于) 将CondPattern视为纯字符串,与TestString按词典顺序进行比较。如果TestString等于CondPattern(两个字符串逐个字符地完全相等)则为真。如果CondPattern是”"(两个双引号),则TestString将与空字符串进行比较。 ‘-d’(目录) 将TestString视为一个路径名并测试它是否为一个存在的目录。 ‘-f’(常规文件) 将TestString视为一个路径名并测试它是否为一个存在的常规文件。 ‘-s’(非空的常规文件) 将TestString视为一个路径名并测试它是否为一个存在的、尺寸大于0的常规文件。 ‘-l’(符号连接) 将TestString视为一个路径名并测试它是否为一个存在的符号连接。 ‘-x’(可执行) 将TestString视为一个路径名并测试它是否为一个存在的、具有可执行权限的文件。该权限由操作系统检测。 ‘-F’(对子请求存在的文件) 检查TestString是否为一个有效的文件,而且可以在服务器当前的访问控制配置下被访问。它使用一个内部子请求来做检查,由于会降低服务器的性能,所以请谨慎使用! ‘-U’(对子请求存在的URL) 检查TestString是否为一个有效的URL,而且可以在服务器当前的访问控制配置下被访问。它使用一个内部子请求来做检查,由于会降低服务器的性能,所以请谨慎使用!

还可以在CondPattern之后追加特殊的标记[flags]作为RewriteCond指令的第三个参数。flags是一个以逗号分隔的以下标记的列表:

‘nocase|NC’(忽略大小写)

它使测试忽略大小写,扩展后的TestString和CondPattern中’A-Z’ 和’a-z’是没有区别的。此标记仅用于TestString和CondPattern的比较,而对文件系统和子请求的检查不起作用。

‘ornext|OR’(或下一条件)

它以OR方式组合若干规则的条件,而不是隐含的AND。

RewriteCond %{REMOTE_HOST} ^host1.* [OR] RewriteCond %{REMOTE_HOST} ^host2.* [OR] RewriteCond %{REMOTE_HOST} ^host3.* RewriteRule … 针对这3个主机的规则集 …如果不用这个标记,你就必须要书写三次条件/规则对。 RewriteRule配置参数 语句 含义 R 强制外部重定向;R=301 永久重定向、R=302 临时重定向 F 禁止URL,返回403 http状态码 G 强制URL为GONE,返回410 http状态码 P 强制使用代理转发 L 表明当前规则是最后一条规则,停止分析以后的规则重写 N 重新从第一条规则开始运行重写过程 C 与下一条规则关联 T=MIME-type(force MIME type) 强制MIME类型 NS 只是用于不是内部的子请求 NC 不区分大小写 QSA 追加请求字符串 NE 不再输出转义特殊字符 %3d$1 等价于 =$1 生效条件 【说明 】定义重写发生的条件 【语法】 RewriteCond 【TestString】 【CondPattern】 [flags] 【作用域】 server config, virtual host, directory, .htaccess 【覆盖项】 FileInfo 【状态】 扩展(E) 【模块】 mod_rewrite

RewriteCond指令定义了规则生效的条件,即在一个RewriteRule指令之前可以有一个或多个RewriteCond指令。条件之后的重写规则仅在当前URI与Pattern匹配并且满足此处的条件(TestString能够与CondPattern匹配)时才会起作用。

RewriteRule反向引用 ,引用方法是:$N (0


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有