.htaccess重写规则以及参数说明

  作者:bea

先看下面一条RewriteRule命令: RewriteRule ^Products/P([0-9]+)\.html$ /Product.php?product_id=$1 [ L ] 一个基本的RewriteRule命令中有二个参数。在上面的例子中有三个参数。下面我们详细说说这些参数的含义。 RewriteRule命令的第一个参数是一个正则表达式,描述了想要重写的URL地址的匹配模式。第二个参数说明了目标URL地址。用上面这条重写规则来说,任何匹配模式 ^Produc
先看下面一条RewriteRule命令:

RewriteRule ^Products/P([0-9]+)\.html$ /Product.php?product_id=$1 [ L ]

一个基本的RewriteRule命令中有二个参数。在上面的例子中有三个参数。下面我们详细说说这些参数的含义。

RewriteRule命令的第一个参数是一个正则表达式,描述了想要重写的URL地址的匹配模式。第二个参数说明了目标URL地址。用上面这条重写规则来说,任何匹配模式 ^Products/P([0-9]+)\.html$ 的URL地址都将重写为 :/Product.php?product_id=$1 。这里的正则表达式我就不详细介绍了,PHP基础中有很多写正则表达式的。

RewriteRule命令的第二个参数:/Product.php?product_id=$1 通知服务器,如果浏览器发出的URL地址请求能够匹配先前的模式,他将传给那个特定的脚本,而那些数值将替代 $1 变量。

在重写规则的最后,也可以附加一个或多个标记参数(多个用逗号隔开),从而为新的URL地址添加特殊的标志。这些参数也是RewriteRule命令的特殊部分。下面将这些标记罗列如下,供大家参考:

RewriteRule 参数 RewriteRule标记 含 义 描述 R Redirect 发出一个HTTP重定向 F Forbidden 禁止对URL地址的存取 G Gone 标记URL地址不存在 P Proxy 将URL地址传递给mod_proxy L Last 停止处理接下来的规则 N Next 再次重第一个规则开始处理,但是使用当前重写后的URL地址 C Chain 将当前的规则和紧随其后的规则链接起来 T Type 强制执行指明的MIME类 NS Nosubreq 只在没有任何内部子请求执行时运行本脚本 NC Nocase URL地址匹配对大小写不敏感 QSA Qsappend 在新的URL地址后附加查询字符串部分,而不是替代 PT Passthrough 将重写后的URL地址传递给另一个Apache模块进行进一步处理 S Skip 忽略之后的规则 E Env 设置环境变量
有用  |  无用

猜你喜欢