.htaccess 规则匹配新 url 的一部分并用作旧 url 的查询字符串

.htaccess rule match part of new url and use as query string for old url

我正在尝试匹配 URL 的一部分,然后使用匹配的表达式追加到旧 URL.

查询字符串的末尾

我在 .htaccess 中有以下行,一旦我弄清楚我做错了什么,我就可以修复其余部分,所以现在我只关注以下行:

RewriteRule ^league/([^/]*)$/matches/? index.php?page_id=1074&league=

我希望 ([^/]*)$ 出现在 </code> 所在的位置 </p> <p>所以本质上:<code>/league/29/matches/ 会指向 index.php?page=1074&league=29

谁能告诉我我做错了什么? :)

RewriteRule ^league/([^/]*)$/matches/? index.php?page_id=1074&league=

正则表达式中间的子模式([^/]*)$之后的$(end-of-string锚点)在这里没有意义,会导致正则表达式失败。您还应该在此处使用 + 量词(1 或更多)。您还缺少正则表达式末尾的 end-of-string 锚点 ($)(否则尾随 /? 是多余的)。尽管您不应该在重写时真正将尾部斜杠设为可选,因为它可能会让您打开重复的内容。 (您应该重定向到 append/remove 尾部斜线以规范化 URL。)您还缺少 RewriteRule 上的 L 标志。

请尝试以下操作:

RewriteRule ^league/([^/]+)/matches/?$ index.php?page_id=1074&league= [L]

不过,如果您只需要数字(如您的示例所示),那么您应该匹配数字,而不是 任何东西。因此,以下可能“更”正确:

RewriteRule ^league/(\d+)/matches/$ index.php?page_id=1074&league= [L]