.htaccess 使用此htaccess创建可选的Get变量
我在.htaccess中有此规则:.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
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=
参数,这可能没问题。如果没有第四路径组件,我的解决方案将不通过任何步骤参数。任何一种方法都应该有效。它的意思是“如果此规则匹配,则跳过下一个规则”。看。