首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Apache RewriteRule不将变量拆分为查询字符串

Apache RewriteRule不将变量拆分为查询字符串
EN

Stack Overflow用户
提问于 2016-09-16 22:33:29
回答 1查看 117关注 0票数 0
代码语言:javascript
运行
AI代码解释
复制
<Directory /var/www/html/api/>
        RewriteEngine on
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^([^/]*)(.*)$ index.php?version=$1&method=$2&param1=$3&param2=$4&param3=$5
</Directory>

以下网址:http://myserver.com/api/v1/hello/there/stranger

代码语言:javascript
运行
AI代码解释
复制
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,使其正确地将这些变量拆分成匹配的查询字符串?

EN

回答 1

Stack Overflow用户

发布于 2016-09-16 22:39:39

它没有拆分,因为您的正则表达式没有将它拆分成多个组。

您的正则表达式在v1/之后捕获(.*),这将只捕获单个组中的/hello/there/stranger

您可以使用以下不同的规则:

代码语言:javascript
运行
AI代码解释
复制
# 2 parts
RewriteRule ^([^/]+)(/[^/]+)/?$ index.php?version=$1&method=$2 [L,QSA]

# 3 parts
RewriteRule ^([^/]+)(/[^/]+)(/[^/]+)/?$ index.php?version=$1&method=$2&param1=$3 [L,QSA]

# 4 parts
RewriteRule ^([^/]+)(/[^/]+)(/[^/]+)(/[^/]+)/?$ index.php?version=$1&method=$2&param1=$3&param2=$4 [L,QSA]

# 5 parts
RewriteRule ^([^/]+)(/[^/]+)(/[^/]+)(/[^/]+)(/[^/]+)/?$ index.php?version=$1&method=$2&param1=$3&param2=$4&param3=$54 [L,QSA]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39540970

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档