[英].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.