2013-08-27 30 views
0

网址:http://example.com/good_game/osmp/mod_rewrite的URL以2个PARAMS以上

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的multiparams?

回答

1

这应该给ü你想要什么:

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

您与您的规则问题是,你正在使用(.*)您的第一组后,因此它会得到任何由该集团是/anything/离开。

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

1

一个重写规则,如:

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

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