.htaccess HTACCESS重写规则将查询参数合并到第一个参数
我正在努力使$\u get参数位于它们各自的键下 我有以下访问规则:.htaccess HTACCESS重写规则将查询参数合并到第一个参数,.htaccess,.htaccess,我正在努力使$\u get参数位于它们各自的键下 我有以下访问规则: RewriteRule ^view/new/(.*)/?(.*)/?(.*)/?(.*)$ vehicles/new-details.php?man=$1&model=$2&trim=$3&engine=$4 [QSA] 访问此页面时,我临时打印出$\u GET数组: print_r($_GET); 这将返回: 阵列([man]=>BMW/3系列/SEL/EVO-3.0-TFSI[车型]=>[tri
RewriteRule ^view/new/(.*)/?(.*)/?(.*)/?(.*)$ vehicles/new-details.php?man=$1&model=$2&trim=$3&engine=$4 [QSA]
访问此页面时,我临时打印出$\u GET数组:
print_r($_GET);
这将返回:
阵列([man]=>BMW/3系列/SEL/EVO-3.0-TFSI[车型]=>[trim]=>
[引擎]=>)
鉴于其应返回:
Array([man]=>BMW[model]=>3系[trim]=>SEL[engine]=>EVO-3.0-TFSI)
man参数是必需的,而所有其他参数都是可选的
不知道这里发生了什么。可能是因为我在重写规则中设置了可选参数吗
(.*)
将接收每个捕获组中的所有字符,您希望将其限定为接收/
之前的所有字符
因此,将(.*)
替换为([^/]*)
,这会告诉mod_rewrite“在遇到/
之前接受任何字符”
这会给你你期望的结果
编辑:一个更完整的答案 你能举几个源URI和目标URI的例子吗?
RewriteRule ^view/new/(.*)/?(.*)/?(.*)/?(.*)$ vehicles/new-details.php?man=$1&model=$2&trim=$3&engine=$4 [QSA]
RewriteRule ^view/new/([^/]*)/?([^/]*)/?([^/]*)/?([^/]*)$ vehicles/new-details.php?man=$1&model=$2&trim=$3&engine=$4 [QSA]