我需要在urlrewrite规则中将一些数字放入结果URL中,因此从像"/test/723/"这样的URL中,我会得到"/test/700-series/723/"。显然这是
RewriteRule ^/test/([1-9])([0-9]{2})/$ /test/$100-series/$1$2/
由于$100无法正确解释,所以不起作用。是否有办法将$1与其后面的任何数字分开?
我需要在urlrewrite规则中将一些数字放入结果URL中,因此从像"/test/723/"这样的URL中,我会得到"/test/700-series/723/"。显然这是
RewriteRule ^/test/([1-9])([0-9]{2})/$ /test/$100-series/$1$2/
由于$100无法正确解释,所以不起作用。是否有办法将$1与其后面的任何数字分开?
你很接近了,只需要去掉前面的斜杠:
RewriteRule ^test/([1-9])([0-9]{2})/?$ /test/$100-series/$1$2/ [L]
.htaccess
是每个目录的指令,并且 Apache 从 RewriteRule
URI 模式中剥离当前目录路径(因此前导斜杠)。根据官方 Apache 文档,它清楚地说明:
RewriteRule 反向引用: 这些反向引用的格式为 $N (0 <= N <= 9)。$1 到 $9 提供访问模式中分组部分(括号中的内容)的能力,从 RewriteRule 开始到当前一组 RewriteCond 条件。$0 提供对该模式匹配的整个字符串的访问。
因此,$100 总是被解释为 $1 和 2 个字面零。
** 因此,
$100始终被解释为
$1`和2个字面零。 - anubhava