我有网址:
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://
和字符/,?,=和&没有逃脱。除此之外如果原始请求中没有查询会有尾随?,但这可能不是大问题。
答案 0 :(得分:0)
你可以试试这个:
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中查询的一部分
http://example.com/
与http://newdomain.com/
相同。