URL重写使用两个$ GET变量

时间:2014-03-17 19:37:00

标签: php .htaccess

我目前正在使用我的.htaccess文件,以使我的网址看起来更清晰。我设法用一个变量来解决它,所以我成功地改变了:

http://domain.com/index.php?role=Top

成:

http://domain.com/lane/Top

和我的.htaccess页面看起来像这样:

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f

RewriteRule ^lane/(\w+)$ ./index.php?role=$1
RewriteRule ^lane/(\w+)/$ ./index.php?role=$1

现在我想弄清楚的是如何制作:

http://domain.com/result.php?champ1=foo&champ2=bar

成:

http://domain.com/matchup/foo&bar

有没有办法在我的.htaccess文件中执行此操作?

3 个答案:

答案 0 :(得分:3)

您只需要在正则表达式中添加另一个捕获组:

RewriteRule ^lane/(\w+)/(\w+)$ ./result.php?champ1=$1&champ2=$2

能够做到:

http://domain.com/matchup/foo/bar

或具体你要求:

RewriteRule ^lane/(\w+)&(\w+)$ ./result.php?champ1=$1&champ2=$2

braces()内部表达式的每个部分都被定义为捕获组。所以这是被提取并推送到目标字符串中的部分,如$ 1,$ 2等......

答案 1 :(得分:0)

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f

RewriteRule ^lane/(\w+)$ ./index.php?role=$1
RewriteRule ^lane/(\w+)/$ ./index.php?role=$1

# new rewrite rule
RewriteRule ^ matchup/(\w+)&(\w+)$ ./result.php?champ1=$1&champ2=$2

答案 2 :(得分:0)

您可以使用:

Options +FollowSymLinks
RewriteEngine On
RewriteBase /

RewriteCond %{SCRIPT_FILENAME} -d [OR]
RewriteCond %{SCRIPT_FILENAME} -f
RewriteRule ^ - [L]

RewriteRule ^lane/(\w+)/?$ index.php?role=$1 [L,QSA,NC]

RewriteRule ^matchup/(\w+)&(\w+)/?$ result.php?champ1=$1&champ2=$2 [L,QSA,NC]