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

Php 有没有办法在.htaccess中执行某种正则表达式循环,php,regex,.htaccess,mod-rewrite,redirect,Php,Regex,.htaccess,Mod Rewrite,Redirect,您好,现在我的.htaccess文件中有一个规则列表,但是如果我需要添加一个新页面,我需要再次编辑此文件并添加另一个规则。这里有一些 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&

您好,现在我的.htaccess文件中有一个规则列表,但是如果我需要添加一个新页面,我需要再次编辑此文件并添加另一个规则。这里有一些

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
有没有什么方法可以让我有一条规则适用于所有人。是否有其他方法进行循环,以便url中的每个附加/something/extra都将其添加到重定向中


谢谢。

简单的答案是否定的。不可能创建一个能够处理动态变量量的重写规则。您唯一的实际选择是捕获基本内容,然后将所有内容捕获为单个块,并使用PHP对其进行解析。也许可以改进您当前的情况,这取决于第二条规则中的x=work是否为输入错误,以及查询字符串变量的一致性

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

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

您可以在每行前面放置四个空格来重新格式化您的规则吗?您可以将一个通用规则传递到PHP文件,并在以后解析它(如果确实需要的话)。