想要 .htaccess 来显示 / 代替 ?在 URL 中,我还能够获得 $_GET[“param1”] 之类的数据


Want .htaccess to display / insteade of ? in URL and also i am able to get data like $_GET["param1"]

我的实际网址如下。http://localhost/waterpump/index.php?param1=4498&param2=930&param3=876&param4=201&param5=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&param2=$2&param3=$3&param4=$4&param5=$5 [nc]
RewriteRule ^waterpump/param1/(.*)/param2/(.*)/param3/(.*)/param4/(.*)/ /index.php?param1=$1&param2=$2&param3=$3&param4=$4 [nc]
RewriteRule ^waterpump/param1/(.*)/param2/(.*)/param3/(.*)/ /index.php?param1=$1&param2=$2&param3=$3
RewriteRule ^waterpump/param1/(.*)/param2/(.*)/ /index.php?param1=$1&param2=$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 进行一些更改。 此外,上述方法仅适用于水泵。 除了水泵,还会有别的东西吗?