2

我需要有关重写规则和正则表达式的帮助

这是我的输入网址

http://localhost/ws/rest/user/login?login=user_login&password=user_pass

我希望它重定向到这个

http://localhost/index.php?type=rest&ressource=user&action=login&login=user_login&password=user_pass

我的重写规则

RewriteCond %{REQUEST_METHOD} ^(GET|POST)
RewriteRule ^ws/(.+)/(.+)/([A-Za-z]+)(\\?)(.+)?   index.php?type=$1&ressource=$2&action=$3&$5 [L]

我认为问题出?在 url 中,因为当我用 a 替换时&它可以工作吗?

4

2 回答 2

3
RewriteEngine On

RewriteCond %{REQUEST_METHOD} ^(GET|POST)
RewriteRule ^ws/([^/]+)/([^/]+)/([A-Za-z]+) index.php?type=$1&resource=$2&action=$3 [QSA,L]

请注意该QSA标志,以便将来自原始 URL 的查询字符串附加到新 URL。

于 2013-10-02T16:55:46.123 回答
1

问题: QUERY_STRINGRewriteRule. 用这个替换你的代码:

RewriteCond %{QUERY_STRING} ^login=user_login&password=user_pass$ [NC]
RewriteRule ^ws/([^/]+)/([^/]+)/([a-z]+)/?$ /index.php?type=$1&ressource=$2&action=$3 [L,QSA,NC]

由于在此处使用标志,您现有的QUERY_STRING将附加到生成的 URI 。QSA

在此处阅读有关它的更多信息:Apache mod_rewrite 简介

于 2013-10-02T16:55:58.403 回答