我想重定向以下示例网址:
http://example.com/phone/iphone-4-vs-iphone-5/vote/123
要:
http://example.com/product.php?category=phone&p1=iphone-4&p2=iphone-5&user=123
我在htaccess文件中尝试了以下ModRewrite规则:
RewriteRule ^(phone)/(.*)-vs-(.*)/vote/([1-9][0-9]*)$ /product.php?category=$1&p1=$2&p2=$3&user=$4 [L]
我在product.php
档案中有这个:
<?php
echo $_GET['category'];
echo '<br />';
echo $_GET['p1'];
echo '<br />';
echo $_GET['p2'];
echo '<br />';
echo $_GET['user'];
?>
PHP的预期输出:
phone
iphone-4
iphone-5
123
我得到的实际输出:
phone
iphone-4
iphone-5/vote/123
因此,重写规则有问题,因此它会将user
变量附加到p2
变量。
答案 0 :(得分:1)
你的规则应该有效,但是你可以用这个非贪婪的量词和否定的类替换你的规则:
RewriteRule ^(phone)/(.+?)-vs-([^/]+)(?:/vote/([1-9][0-9]*))?/?$ product.php?category=$1&p1=$2&p2=$3&user=$4 [L,QSA,NC]