想要.htaccess来显示/而不是?在URL中,我也能够获得$ _GET [" param1"]等数据

时间:2012-05-10 10:17:19

标签: php .htaccess

我的实际网址如下。 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做到这一点?

2 个答案:

答案 0 :(得分:0)

尝试htaccess tricks

中的示例

e.g。

Options +FollowSymlinks
RewriteEngine on
RewriteRule ^blog/([0-9]+)-([a-z]+) http://corz.org/blog/index.php?archive=$1-$2 [NC]

我不确定参数的数量是固定的还是可变的但是你基本上会做一个匹配的部分,你匹配用斜杠分隔的网址,然后你将它“重写”到原始的网址

答案 1 :(得分:0)

如果您设置使用$ _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]

<强> Editted

如果你已经正确地执行了print_r($ _ GET); on / waterpump / param1 / x / param2 / y / param3 / z /应该给你这样的东西:

array (
       'param1'=>x,
       'param2'=>y,
       'param3'=>z,
       );

有一些更简洁的方法可以减少重写次数,但会对PHP进行一些更改。此外,上述方法仅适用于水泵。除水泵外还有其他什么吗?