提问人:incarnadine 提问时间:9/29/2023 最后编辑:RavinderSingh13incarnadine 更新时间:10/9/2023 访问量:46
将 RewriteRule 更改为 localhost 会导致重定向相对于 localhost 而不是原始 URL
RewriteRule to localhost results in redirects being relative to localhost rather than original URL
问:
我有一个后端服务器运行正常并绑定到 .127.0.0.1:5000
在我站点的根目录中,我必须将请求重定向到我的服务器。.htaccess
RewriteRule "^(.*)$" http://localhost:5000/$1 [P,NE,L,QSA]
如果我访问我的网站的主页,我会被重定向到而不是 .https://example.com
localhost:5000/login
https://example.com/login
我尝试过使用/但由于我只能访问(许多站点在此服务器上运行),因此这些都不起作用。ProxyPass
ProxyPassReverse
.htaccess
有没有办法将最初请求的 URL 传递给我的服务器,以便它正确回复?或者我可以添加一些东西来适当地重写重定向,然后再将它们返回给客户端?.htaccess
答:
1赞
anubhava
9/29/2023
#1
您可以使用此规则通过变量代理所有请求:HTTP_HOST
RewriteEngine On
RewriteRule ^ http://%{HTTP_HOST}:5000%{REQUEST_URI} [P,NE,L]
评论
0赞
incarnadine
9/29/2023
这不会将我连接到我的后端服务器。apache 日志显示 where 是 行中返回的地址之一。我尝试将我的后端服务器绑定到 ::1(因为这似乎相当于 127.0.0.1),但得到了相同的结果。[proxy:error] [pid 995198] (111)Connection refused: AH00957: HTTP: attempt to connect to [ipv6addr]:5000 (*) failed
ipv6addr
ip address
inet6 ipv6addr scope global deprecated
0赞
anubhava
9/29/2023
所以你试过:?RewriteRule ^ http:///example.com:5000%{REQUEST_URI} [P,NE,L]
0赞
incarnadine
9/29/2023
是的,这不适用于相同的错误。我假设因为我只绑定到 ,所以它不能在外部访问,所以唯一的方法是在内部使用语句或语句中。不幸的是,这台机器不能使用。127.0.0.1:5000
localhost
127.0.0.1
RewriteRule
0.0.0.0
0赞
anubhava
9/29/2023
所以你的意思是工作正常?RewriteRule ^ http://localhost:5000%{REQUEST_URI} [P,NE,L]
0赞
incarnadine
9/30/2023
它的工作原理是请求已成功传递到后端,但随后后端尝试将我重定向到并且浏览器中的 URL 更改为显然不起作用(我希望它使用原始 URL 而不是重写的 URL)/login
http://localhost:5000/login
http://example.com/login
评论