有没有办法在.htaccess中进行某种正则表达式循环

时间:2010-08-23 21:36:24

标签: php regex .htaccess mod-rewrite redirect

嗨,我在.htaccess文件中有一个规则列表但是如果我需要添加一个新页面,那么我需要再次编辑这个文件并添加另一个rulles。他是几个

RewriteRule ^admin/(.*).html$ index.php?x=admin&y=$1
RewriteRule ^admin/project/(.*).html$ index.php?x=work&p=project&$1
RewriteRule ^work/(.*).html$ index.php?x=work&p=$1

我是否有某种方法可以让1条规则适用于所有人。是否有办法进行循环,以便对于url中的每个额外的/ something / extra它将在重定向中添加它?

感谢。

1 个答案:

答案 0 :(得分:2)

简单的答案是,不可能创建一个可以处理动态数量变量的RewriteRule。您唯一真正的选择是捕获基础知识,然后将所有内容捕获为单个块并使用PHP进行解析。有可能改进你现在拥有的东西,它取决于你的第二个规则中的x =工作是否是拼写错误,以及你的查询字符串变量的一致性是多少......

RewriteRule ^([a-zA-Z0-9-]+)/([a-zA-Z0-9-]+)\.html$ index.php?x=$1&y=$2

这是您在基于MVC的系统中可能会看到的那种模式。但它们通常具有路由系统,允许您指定要匹配的模式(这与必须以多种方式添加RewriteRules相同)。