我正在处理访问我网站上的网址并添加
的API
/?parameter1=value¶meter2=value
到网址。我希望我的htaccess处理此请求并仅保留参数的值。 API还在查询字符串中添加了许多其他参数,但我只想保留其中的两个参数。
以下不起作用:
RewriteCond %{QUERY_STRING} ^parameter1=([^&]+)
RewriteCond %{QUERY_STRING} ^parameter2=([^&]+)
RewriteRule ^my-url/?$ controller.php?parameter1=%1¶meter2=%2
我该如何正确地做到这一点?
编辑:
这是一个例子。
The url is:
http://example.com/my-url/?parameter1=value1&stuff=1&stuff2=2¶meter2=value2
htaccess应该得到参数1&参数2值。
答案 0 :(得分:2)
试试这个,只需抓住服务器端代码中的两个参数即可。例如$_GET
。如果它们总是在查询字符串中,您只需检查parameter1
然后它会附加其他参数,您就可以得到所需的信息。
RewriteCond %{QUERY_STRING} ^\bparameter1=
RewriteRule ^my-url/?$ controller.php [QSA,L]
答案 1 :(得分:0)
尝试以下方法:
RewriteEngine On
RewriteCond %{THE_REQUEST} ^(GET|POST)\ /my-url/\?parameter1=(.*)&stuff=(.*)&stuff2=(.*)¶meter2=(.*)\ HTTP
RewriteRule ^ /controller.php?parameter1=%2¶meter2=%5\? [R,L]
请注意,如果网址中有始终 &stuff=1&stuff2=2
这两个值,则只会获得两个参数。
答案 2 :(得分:0)
我不得不对GET中的键/值对进行类似的设置,具体取决于客户端平台,该顺序可以是任意顺序。
基于此线程中的有用指针,这是我根据上述问题想到的:
#= 1. Catch parameter1, append querystring as "p1=". Rewrite to "/parameter1" below:
RewriteCond %{REQUEST_URI} ^/my-url/$
RewriteCond %{QUERY_STRING} ^parameter1=([^&]+)
RewriteRule (.*) /parameter1?%{QUERY_STRING}&p1=%1 [P,QSD]
#= 2. Catch parameter2, append querystring as "p2=". Rewrite to "/parameter2" below:
RewriteCond %{REQUEST_URI} ^/parameter1$
RewriteCond %{QUERY_STRING} ^parameter2=([^&]+)
RewriteRule (.*) /parameter2?%{QUERY_STRING}&p2=%1 [P,QSD]
#= 3. Now explicitly catch p1,p2 and feed to them to the back-end url:
RewriteCond %{REQUEST_URI} ^/parameter2$
RewriteCond %{QUERY_STRING} p1\=([^&]+)&p2\=([^&]+)$
RewriteRule (.*) controller.php?parameter1=%1¶meter2=%2 [P,L,QSD]
上面的内容对我来说很好,但是我确实注意到它的处理有点慢,因此,如果有人提出批评,我将很高兴听到它!