我想用apache的mod_rewrite模块创建外部链接的代理。
我希望它将用户从http://stackoverflow.com/go/http://example.com/
重定向到http://example.com/
,其中http://stackoverflow.com/
是我网站的网址。所以我在.htaccess
文件中添加了一条规则。
RewriteRule ^/go/http://(.+) http://$1 [R=302,L]
但它根本不起作用。如何解决这个问题?
答案 0 :(得分:1)
我不确定Apache或浏览器是否会将//
缩减为/
,但由于它不会更改目录,因此其中一个目录会将此减少为我的设置中的单个斜杠。这就是为什么第二个斜杠在下面的规则中有?
的原因:
RewriteRule ^go/http://?(.*)$ http://$1 [R,L]
这会将用户重定向到该域。
答案 1 :(得分:0)
这会将所有网址(没有开头的http://)重写为新的完整网址。如果您还要使用https链接,则需要类似第二条规则的内容。
RewriteRule ^go/(.*) http://$1 [R=302,L,QSA,NE]
RewriteRule ^gos/(.*) https://$1 [R=302,L,QSA,NE]
如果您需要包含参数
,我还添加了QSA