我目前正在使用我的.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文件中执行此操作?
答案 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]