.htaccess mod_使用2个或更多参数重写url
URL:.htaccess mod_使用2个或更多参数重写url,.htaccess,mod-rewrite,apache2,.htaccess,Mod Rewrite,Apache2,URL: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] => /os
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 )
多内存需要什么重写规则?这应该能满足您的需要:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)/?$ /?service=$1&terminal=$2 [L,QSA]
您的规则的问题是,您在第一个组之后使用了(.*)
,因此它将得到该组剩余的任何内容,即/anything/
因此,基本上,您的规则是告诉服务器获取任何东西,而不是/
,这样它就得到了一个好游戏,然后您要求它获取剩余的任何东西,这样它就得到了一个重写规则,如:
RewriteRule ^/([^/]*)/([^/]*)/?$ /?service=$1&terminal=$2 [L,QSA]
你应该做你需要的。基本上,将参数中不需要的字符放在()之外,以避免捕获它们