![Apache 查询字符串重写不起作用](https://linux22.com/image/98922/Apache%20%E6%9F%A5%E8%AF%A2%E5%AD%97%E7%AC%A6%E4%B8%B2%E9%87%8D%E5%86%99%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8.png)
我需要在查询参数中重写域名以增强代理。代理基本上只是域重写,但来自上游服务器的一些响应包括最终用作重定向的查询参数(在“Location”标头中)。我需要能够重写这个域名,以便它指向代理而不是上游服务器。我当前的配置看起来像
<VirtualHost *:443>
SSLEngine On
SSLProxyEngine On
# Set the path to SSL certificate
# Usage: SSLCertificateFile /path/to/cert.pem
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
# Servers to proxy the connection, or;
# List of application servers:
# Usage:
# ProxyPass / http://[IP Addr.]:[port]/
# ProxyPassReverse / http://[IP Addr.]:[port]/
# Example:
RewriteEngine On
LogLevel alert rewrite:trace6
RewriteCond %{QUERY_STRING} (.*)upstream\.com(.*)
RewriteRule (.*)upstream\.com(.*) %1proxy.com%2 [N]
ProxyPass / https://upstream.com/
ProxyPassReverse / https://upstream.com/
</VirtualHost>
代理工作正常,但上游服务器所做的第一件事就是发送带有用于第二次重定向的查询参数的重定向,这会导致代理失去对流量的控制。我需要重写此查询字符串,以便上游服务器响应将导致重定向回代理而不是上游服务器。
mod_rewrite 已启用,并且“apachectl -t”报告配置正常。
答案1
a2enmod Rewrite
通过在终端中输入然后重新启动 apache 来确保您已打开重写模块
另请确保您在虚拟主机内的目录块中有一个AllowOverride