首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >这个RewriteCond中的$1参数有什么作用?

这个RewriteCond中的$1参数有什么作用?
EN

Stack Overflow用户
提问于 2012-11-14 05:40:41
回答 2查看 32.2K关注 0票数 24

我正在设置Apache重写规则来整理我的CodeIgniter URL。

This question (以及我在附近找到的大量论坛帖子等)记录了以下规则(或非常类似的规则)的使用:

RewriteEngine on
RewriteCond $1 !^(index\.php|phpinfo\.php|images|robots\.txt|sitemap\.xml\.gz|sitemap\.xml|assets)
RewriteRule ^(.*)$ /index.php/$1 [L]

我知道RewriteRule后面的$1指的是(.*)中捕获的字符串,但是第一个$1 (紧跟在RewriteCond后面)代表什么呢?我见过很多例子使用类似%{REQUEST_URI}的东西作为RewriteCond的第一个参数。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-14 05:48:12

$1基本上是从字符串的开头和结尾捕获的所有内容。换句话说,就是$1 = (.*)

在重写中,^表示字符串的开始,(.*)表示匹配任何内容,$表示字符串的结尾。因此,基本上,它的意思是从字符串的开头到结尾获取所有内容,并将该值赋给$1。

所以如果我输入www.example.com/tacos-are-good,然后输入$1 = "tacos-are-good"。所以你最终的重写实际上是www.example.com/index.php/tacos-are-good

这里有一个ModRewrite的小抄,它可能会有所帮助:http://www.addedbytes.com/cheat-sheets/mod_rewrite-cheat-sheet/

票数 30
EN

Stack Overflow用户

发布于 2012-11-14 05:48:01

$1表示它后面的正则表达式中第一组括号中的匹配项。($2将匹配第二组括号-如果给定)

例如,正则表达式匹配不是"index.php“或"phpinfo.php”的任何内容,等等。因此,如果请求的url不是其中之一,则传递重写条件,然后将匹配的部分传递给重写规则。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13369285

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档