.htaccess重写规则以及参数说明
浏览量:791
先看下面一条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标记 | 含 义 | 描 述 |
| 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 | 设置环境变量 |


感谢支持与鼓励~