Regex htaccess-如何在另一个的输出上应用正则表达式模式-封装

Regex htaccess-如何在另一个的输出上应用正则表达式模式-封装,regex,apache,.htaccess,mod-rewrite,Regex,Apache,.htaccess,Mod Rewrite,我正在对变量中的字符串执行几个正则表达式,以便在htaccess规则中进一步使用它,但在几行中执行这样简单的操作似乎相当麻烦: RewriteCond %{THE_REQUEST} (?<=\s)(.*?)(?=\s) RewriteRule ^(.*)$ - [E=HREFPATH:%1] RewriteCond %{ENV:HREFPATH} (^.*)?\? RewriteRule ^(.*)$ - [E=HREFPATH:%1] RewriteCond %{ENV:HREFPATH

我正在对变量中的字符串执行几个正则表达式,以便在htaccess规则中进一步使用它,但在几行中执行这样简单的操作似乎相当麻烦:

RewriteCond %{THE_REQUEST} (?<=\s)(.*?)(?=\s)
RewriteRule ^(.*)$ - [E=HREFPATH:%1]
RewriteCond %{ENV:HREFPATH} (^.*)?\?
RewriteRule ^(.*)$ - [E=HREFPATH:%1]
RewriteCond %{ENV:HREFPATH} /(.*)
RewriteRule ^(.*)$ - [E=HREFPATH:%1]
RewriteCond %{ENV:HREFPATH} (.*)/$
RewriteRule ^(.*)$ - [E=HREFPATH:%1]
-但这不是一个与PHP相关的问题;这只是一个简单的方式来解释我的意思,以及我想要达到的目标

我知道可能有很多正则表达式模式(理论上)可以在这里工作,但它应该与Apache的正则表达式引擎兼容


任何投入都将得到实物奖励;提前感谢。

您在多个规则中执行的操作可以在一个单独的规则中完成,如下所示:

RewriteCond %{THE_REQUEST} \s/+([^?]*?)/*[\s?]
RewriteRule ^ - [E=HREFPATH:%1]
正则表达式详细信息:

  • \s
    :匹配空白
  • /+
    :匹配1+
    /
    s
  • ([^?]*?)
    :延迟匹配0个或更多非
    的字符。在
    %1
  • /*
    :匹配0个或多个尾随
    /
    s
  • [\s?]
    :后面必须跟一个
    或空白
RewriteCond %{THE_REQUEST} \s/+([^?]*?)/*[\s?]
RewriteRule ^ - [E=HREFPATH:%1]