我的实际网址如下。http://localhost/waterpump/index.php?param1=4498¶m2=930¶m3=876¶m4=201¶m5=vis
但我的客户想要以下格式。http://localhost/waterpump/param1/4498/param2/930/param3/876/param4/201/param5/vis
而且我还可以使用 $_GET["param1"] 获取数据
我怎样才能通过 .htaccess 做到这一点?
尝试 htaccess 技巧中的示例
例如
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^blog/([0-9]+)-([a-z]+) http://corz.org/blog/index.php?archive=$1-$2 [NC]
我不确定参数的数量是固定的还是可变的,但你基本上会做一个匹配的部分,你匹配用斜杠分隔的网址,然后你会把它"重写"到原来的网址
如果您设置为使用 $_GET 来获取参数,并且始终有一到五个参数,那么您可以使用以下重写:
RewriteEngine On
RewriteRule ^waterpump/param1/(.*)/param2/(.*)/param3/(.*)/param4/(.*)/param5/(.*)/ /index.php?param1=$1¶m2=$2¶m3=$3¶m4=$4¶m5=$5 [nc]
RewriteRule ^waterpump/param1/(.*)/param2/(.*)/param3/(.*)/param4/(.*)/ /index.php?param1=$1¶m2=$2¶m3=$3¶m4=$4 [nc]
RewriteRule ^waterpump/param1/(.*)/param2/(.*)/param3/(.*)/ /index.php?param1=$1¶m2=$2¶m3=$3
RewriteRule ^waterpump/param1/(.*)/param2/(.*)/ /index.php?param1=$1¶m2=$2 [nc]
RewriteRule ^waterpump/param1/(.*)/ /index.php?param1=$1 [nc]
已编辑
如果你已经正确地实现了这一点,在/waterpump/param1/x/param2/y/param3/z/上做了一个 print_r($_GET); 应该给你这样的东西:
array (
'param1'=>x,
'param2'=>y,
'param3'=>z,
);
有更简洁的方法可以做到这一点,这些方法涉及更少的重写,但对 PHP 进行一些更改。 此外,上述方法仅适用于水泵。 除了水泵,还会有别的东西吗?