RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([^/]*)(.*)$ index.php?version=$1&metho">
<Directory /var/www/html/api/>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]*)(.*)$ index.php?version=$1&method=$2¶m1=$3¶m2=$4¶m3=$5
</Directory>
以下网址:http://myserver.com/api/v1/hello/there/stranger
array(5) { ["version"]=> string(2) "v1" ["method"]=> string(21) "/hello/there/stranger" ["param1"]=> string(0) "" ["param2"]=> string(0) "" ["param3"]=> string(0) "" }
版本字符串可以正确拆分,但方法字符串似乎将其余内容放入一个字符串中,而不是像我的目标那样将其拆分为param1、param2和param3。
如何“重写”RewriteRule,使其正确地将这些变量拆分成匹配的查询字符串?
发布于 2016-09-16 22:39:39
它没有拆分,因为您的正则表达式没有将它拆分成多个组。
您的正则表达式在v1/
之后捕获(.*)
,这将只捕获单个组中的/hello/there/stranger
。
您可以使用以下不同的规则:
# 2 parts
RewriteRule ^([^/]+)(/[^/]+)/?$ index.php?version=$1&method=$2 [L,QSA]
# 3 parts
RewriteRule ^([^/]+)(/[^/]+)(/[^/]+)/?$ index.php?version=$1&method=$2¶m1=$3 [L,QSA]
# 4 parts
RewriteRule ^([^/]+)(/[^/]+)(/[^/]+)(/[^/]+)/?$ index.php?version=$1&method=$2¶m1=$3¶m2=$4 [L,QSA]
# 5 parts
RewriteRule ^([^/]+)(/[^/]+)(/[^/]+)(/[^/]+)(/[^/]+)/?$ index.php?version=$1&method=$2¶m1=$3¶m2=$4¶m3=$54 [L,QSA]
https://stackoverflow.com/questions/39540970
复制相似问题