【问题标题】:Is there a way to do some sort of regex loop in .htaccess有没有办法在 .htaccess 中做某种正则表达式循环
【发布时间】:2010-08-23 21:36:23
【问题描述】:

您好,我的 .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

有什么方法可以让我拥有一条适用于所有人的规则。有没有办法做循环,以便为每个额外的 /something/extra 在 url 中添加它??

谢谢。

【问题讨论】:

  • 你能通过在每行前面放置四个空格来重新格式化你的规则吗?
  • 如果确实需要的话,您可以只将一个通用规则传递给 PHP 文件并稍后对其进行解析。

标签: php regex .htaccess mod-rewrite redirect


【解决方案1】:

简单的答案是否定的,不可能创建一个可以处理动态数量的变量的 RewriteRule。您唯一真正的选择是捕获基础知识,然后将所有内容作为一个块捕获,然后使用 PHP 对其进行解析。可能会改进您目前拥有的内容,这取决于您的第二条规则中的 x=work 是否是错字,以及您的查询字符串变量的一致性...

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

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

【讨论】:

    猜你喜欢
    • 2013-02-26
    • 1970-01-01
    • 1970-01-01
    • 2010-10-31
    • 2021-03-19
    • 1970-01-01
    • 2019-02-24
    • 2019-06-28
    • 2019-02-11
    相关资源
    最近更新 更多