-1

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

4

2 回答 2

0

尝试htaccess 技巧中的示例

例如

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

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

于 2012-05-10T10:42:06.340 回答
0

如果您设置使用 $_GET 来获取参数并且总会有 1 到 5 个参数,那么您可以使用以下重写:

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]

已编辑

如果您已正确执行此操作,请执行 print_r($_GET); on /waterpump/param1/x/param2/y/param3/z/ 应该给你类似的东西:

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

有更简洁的方法可以减少重写,但对您的 PHP 进行一些更改。此外,上述方法仅适用于水泵。除了水泵还有别的吗?

于 2012-05-10T10:42:19.760 回答