我需要有关重写规则和正则表达式的帮助
这是我输入的网址
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]
我认为问题出在网址中的?
附近,因为当我用&
替换它时,它有效吗?
答案 0 :(得分:3)
RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^(GET|POST)
RewriteRule ^ws/([^/]+)/([^/]+)/([A-Za-z]+) index.php?type=$1&resource=$2&action=$3 [QSA,L]
注意QSA
标志,以便将原始网址中的查询字符串附加到新网址。
答案 1 :(得分:1)
问题 QUERY_STRING
在RewriteRule
中未匹配。用以下代码替换您的代码:
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
标记,您现有的QSA
会附加到生成的URI中。