[英]How to mod_rewrite query string which includes path and parameters?
[英]How to mod_rewrite from path to query?
我有这样的网址:
http://olddomain.com/demo?abc=ced&ghi=jkl
我想将其重写为单独的域作为查询:
http://newdomain.com/legacy?url=http%3A%2F%2Folddomain.com%2Fdemo%3Fabc%3Ddef%26ghi%3Djkl
现在我有这样的事情:
RewriteRule (.*) http://newdomain.com/legacy?url=%{HTTP_HOST}%{REQUEST_URI}?%{QUERY_STRING}
问题是输出是:
http://newdomain.com/?url=olddomain.com/demo?abc=def&ghi=jkl
因此,没有http://
和字符/,?,=和&不能转义。 除此之外,如果原始请求中不存在查询,则会出现尾随?,但这可能不是什么大问题。
您可以尝试以下方法:
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^/demo [NC]
RewriteRule .* http://newdomain.com/legacy?url=http://%{HTTP_HOST}%{REQUEST_URI} [L,R,QSA]
重新导向
http://olddomain.com/demo?abc=ced
至
http://newdomain.com/legacy?url=http://olddomain.com/demo?abc=ced
除传入查询外,所有字符串均假定为固定的。
由于没有回应我的评论,因此该答案假定:
查询中的&ghi=jkl
附加到替代URL(在问题中),也是传入URL中查询的一部分
http://example.com/
是相同的http://newdomain.com/
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.