我正在尝试创建一个重写规则来执行以下操作:
http://www.example.com/http://other.example.com
→http://www.example.com/index.php?var=http://google.com
这是我目前的规则:
RewriteCond %{REQUEST_URI} ^/(http[s]?\:\/\/|ftp\:\/\/)?(www\.)?[a-zA-Z0-9-\.]+\.(com|org|net|mil|edu|ca|co.uk|com.au|gov|ws|info)$
RewriteRule ^(.*)$ http://www.example.com/index.php?var=$1 [R]
产生:
http://www.example.com/http://google.com
→
http://www.example.com/index.php?var=
的 http:/google.com
无论我尝试什么,我总是将 http:/
取出,而不是 http://
。有什么想法吗?
答案 0 :(得分:0)
Apache删除http://
中的空路径段。因此/foo//bar///
被解释为/foo/bar/
。但THE_REQUEST
中的原始请求行保持不变:
RewriteCond %{THE_REQUEST} ^GET\ /(https?://[^\ ]+)
RewriteRule ^https?:/ /index.php?var=%1 [R]