有一条线/game/rebus/1/
,可能/game/rebus?page=3&perpage=10
有不同的参数。
重定向规则:
RewriteRule ^game/([\w]*)\/*([\w\d]*)\/*\?*([\w\d\&\=]*) game.php?type=$1&id=$2&$3 [NC,L]
在第一种情况下,一切正常,在第二种情况下,子字符串page=3&perpage=10
不包含在请求中。
怎么做才对?
有一条线/game/rebus/1/
,可能/game/rebus?page=3&perpage=10
有不同的参数。
重定向规则:
RewriteRule ^game/([\w]*)\/*([\w\d]*)\/*\?*([\w\d\&\=]*) game.php?type=$1&id=$2&$3 [NC,L]
在第一种情况下,一切正常,在第二种情况下,子字符串page=3&perpage=10
不包含在请求中。
怎么做才对?
您的 RewriteRule 没有考虑参数可能丢失或为空的事实。因此,您可以使用以下规则:
在此规则中,我在每个量词组的末尾添加了一个问号 (?),以指示这些组可以是可选的。我还添加了选项 (?[\w\d&=]*)? 处理可能丢失或为空的请求参数。
请注意,在此规则中,我使用 + 量词而不是 * 来指示这些组必须至少包含一个字符。这将有助于避免请求中没有参数但在您的规则中考虑了这些参数的情况。
例如,给定此规则,字符串 /game/rebus/1/ 将被解析如下:
字符串
/game/rebus?page=3&perpage=10
将像这样被解析:经过多次尝试,我设法实现了我所需要的。那么后期怎么样呢?在 RewriteRule 中被顽固地忽略了,我试图在 RewriteCond 中定义一个子字符串并且它都有效。