0

网址: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?

4

2 回答 2

1

这应该给你你想要的:

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

您的规则的问题是您在(.*)第一组之后使用,因此它将获得该组留下的任何内容,即/anything/.

所以基本上你的规则是告诉服务器得到任何不是 a/所以它得到 good_game,然后你要求它得到任何剩下的所以它得到/osmp/.

于 2013-08-27T18:41:41.010 回答
1

一个 RewriteRule 像:

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

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

于 2013-08-27T18:43:33.213 回答