繁体   English   中英

.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=$1

我希望([^/]*)$出现在$1的位置

所以本质上: /league/29/matches/将指向index.php?page=1074&league=29

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

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

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

请尝试以下操作:

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

虽然,如果您只期望数字(如您的示例中所示),那么您应该匹配数字,而不是任何东西 因此,以下内容可能“更”正确:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM