mod_rewrite url有2个参数或更多

时间:2013-08-27 18:34:00

标签: .htaccess mod-rewrite apache2

网址: http://example.com/good_game/osmp/

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)(.*)$ /?service=$1&terminal=$2 [L,QSA]

我收到了

Array ( [service] => good_game [terminal] => /osmp/ )

我需要

Array ( [service] => good_game [terminal] => osmp )

我需要什么RewriteRule才能使用多个项目?

2 个答案:

答案 0 :(得分:1)

这应该给你你想要的东西:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)/?$ /?service=$1&terminal=$2 [L,QSA]

您的规则问题在于您在第一个群组后使用(.*),因此该群组将留下/anything/的任何内容。

所以基本上你的规则告诉服务器得到的东西不是/所以它得到了good_game,然后你要求它得到任何东西以便得到/osmp/

答案 1 :(得分:1)

RewriteRule,如:

RewriteRule ^/([^/]*)/([^/]*)/?$ /?service=$1&terminal=$2 [L,QSA]

应该做你需要的。基本上,将您不想要的字符放在()之外的参数中以避免捕获它们。