Mod_rewrite:重定向到查询字符串中的 url

Mod_rewrite:重定向到查询字符串中的 url

Apache 服务器接收以下格式的请求

http://192.168.110.65/?http%3A%2F%2Fdev.virtualearth.net

如何使用 mod_rewrite 让 Apache 生成查询字符串的重定向

http%3A%2F%2Fdev.virtualearth.net

这是我的 mod_rewrite

<IfModule rewrite_module>
RewriteEngine On
ErrorLog "logs/rewrite.log"
LogLevel trace8
RewriteCond %{QUERY_STRING} http
RewriteRule "/" %{QUERY_STRING} [R,END,NE,QSD] 
</IfModule>

这是日志中的内容:

无法将 GET /http%3A%2F%2Fdev.virtualearth.net%2FREST%2Fv1%2FImagery%2FMetadata%2FAerialWithLabels%3Fincl%3DImageryProviders%26key%3DArqI7N2ea0D8oysu209dksva2GSUXRIz1fJZigqHRuHNQMhGHvVZwxg76pSlwBFi%26jsonp%3DloadJsonp758595 HTTP/1.1 映射到文件

身份验证阶段“翻译”给出状态 403:/http://dev.virtualearth.net/REST/v1/Imagery/Metadata/AerialWithLabels?incl=ImageryProviders&key=ArqI7N2ea0D8oysu209dksva2GSUXRIz1fJZigqHRuHNQMhGHvVZwxg76pSlwBFi&jsonp=loadJsonp758595

问题在于它没有重定向到查询字符串中的 URL,而是将当前主机添加到 URL 前面(http://xx.xx.xx.xx/网址) 并重定向,因此我得到 403。我需要找到一种方法,以便在重定向时不将当前主机添加到前面。

答案1

您可以使用 Proxy Pass 做同样的事情。尝试以下解决方案

打开位于 \conf 目录中的 httpd.conf。查找以下LoadModule指令并通过删除行开头的 # 来取消注释它们。

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so

在 httpd.conf 的底部添加以下行以启用重新路由。

ProxyPass /images http://localhost:8080/images
ProxyPassreverse / http://localhost:8080/

相关内容