.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]
我正在尝试匹配 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]