Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.htaccess 使用此htaccess创建可选的Get变量_.htaccess - Fatal编程技术网

.htaccess 使用此htaccess创建可选的Get变量

.htaccess 使用此htaccess创建可选的Get变量,.htaccess,.htaccess,我在.htaccess中有此规则: RewriteRule ^build_system/([^/]+)/([^/]+)/([^/]+)/?$ /po_systems/build_system.php?business_id=$1&system_id=$2&quantity=$3 这对该url非常有用: http://somesite.com/po_systems/build_system/60/495C31/1 但是现在我需要一个可选的第四个Get变量,它将为我提供$\u G

我在.htaccess中有此规则:

RewriteRule ^build_system/([^/]+)/([^/]+)/([^/]+)/?$ /po_systems/build_system.php?business_id=$1&system_id=$2&quantity=$3
这对该url非常有用:

http://somesite.com/po_systems/build_system/60/495C31/1
但是现在我需要一个可选的第四个
Get
变量,它将为我提供
$\u Get
变量步骤,如下所示:

http://somesite.com/po_systems/build_system/60/495C31/1/2

$_GET['step'] // 2
但是,如果没有第四个
Get
变量,我还需要该规则起作用。因此,基本上我需要3和4个
Get
变量才能工作,第4个变量是可选的。

试试看

RewriteRule ^build_system/([^/]+)/([^/]+)/([^/]+)/?([^/]*)/?$ /po_systems/build_system.php?business_id=$1&system_id=$2&quantity=$3&step=$4

我会用两条单独的规则来写:

RewriteRule ^build_system/([^/]+)/([^/]+)/([^/]+)/([^/]+)/?$ /po_systems/build_system.php?business_id=$1&system_id=$2&quantity=$3&step=$4 [S=1]
RewriteRule ^build_system/([^/]+)/([^/]+)/([^/]+)/?$         /po_systems/build_system.php?business_id=$1&system_id=$2&quantity=$3
如果有4个路径组件,则第一条规则将匹配,并跳过下一条规则(
[S=1]
)。否则,下一条规则将尝试匹配

@Ulrich Palha的解决方案可能也有效,但正则表达式变得越来越复杂。如果没有第四路径组件,它将传递一个空的
step=
参数,这可能没问题。如果没有第四路径组件,我的解决方案将不通过任何
步骤
参数。任何一种方法都应该有效。

它的意思是“如果此规则匹配,则跳过下一个规则”。看。