如何重写网址并将完整的请求网址作为参数传递?

时间:2014-09-08 13:11:43

标签: php apache .htaccess url mod-rewrite

我想重写像http://www.domain.tld/test/page.html?id=1&required=1&foo=bar这样的网址 到http://www.domain.tld/wrapper.php?url=[FULL REQUEST URL]

在wrapper.php中的

我希望$_GET['url']http://www.domain.tld/test/page.html?id=1&required=1&foo=bar

到目前为止我已尝试过:

RewriteEngine On
RewriteCond %{QUERY_STRING} ^(.*required=.*)$   [NC]
RewriteRule ^ /wrapper.php?url=http://%{HTTP_HOST}%{REQUEST_URI}?%{QUERY_STRING} [L]

但遗憾的是$_GET['url']现在只有http://www.domain.tld/test/page.html?id=1,其他参数缺失。

正确的apache synthax应如何看待?

2 个答案:

答案 0 :(得分:0)

尝试将QSA添加到重写规则

[L,QSA]

答案 1 :(得分:0)

您可以在根目录中使用这样的规则.htaccess:

RewriteEngine On

RewriteCond %{QUERY_STRING} (^|&)required=[^&]+ [NC]
RewriteRule !^wrapper\.php /wrapper.php/http://%{HTTP_HOST}%{REQUEST_URI}@%{QUERY_STRING}? [L,NC]

RewriteCond %{REQUEST_URI} ^(/wrapper\.php)/([^@]*)@(.+)$ [NC]
RewriteRule ^ %1?url=%2\?%3 [L,B]