mod_rewrite:可以两次引用返回参考



我有一个重写规则(在apache htaccess文件中),该规则正在尝试使用仅次于一个捕获($ 1)的两次返回引用:

RewriteRule ^([A-Za-z0-9_-]+)/?$ $1.php?nav=$1

看来查询字符串被留下了emtpy,例如

example.com/new

被重写为

example.com/new.php?nav=

我想要的是

example.com/new.php?nav=new

我的问题:我可以在表达式中两次引用$ 1吗?

更新:

mod_rewrite上的apache文档表示您可以在重写规则的替换部分中尽可能多地引用捕获。但是,在尝试了几天后,我无法使它起作用。我确实得到了我的规则,可以传递在那里的在线正则测试仪,但没有在我的网站上。最后,我重新设计了菜单系统,以便可以使用更简单的重写规则。

您使用的这是错误的:

^(A-Za-z0-9-_)$

仅在方括号中允许范围,您需要使用+访问者匹配1个字符。

用以下方式替换您的重写:

RewriteRule ^([a-z0-9_-]+)/?$ $1.php?nav=$1 [L,NC,QSA]

最新更新