无法摆脱持久的 Apache2 重定向(即使 purge/flush/reinstall)
Can't get rid of a persistent Apache2 redirect (even with purge/flush/reinstall)
我完全被难住了。我试图将所有 http 请求转发到 https(因此端口 80 到 443)。我厌倦了一些方法,包括
Redirect / https:/address.com
Redirect permanent / https://address.com
RedirectRewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
在我尝试永久重定向后,它终于发生了,但是转发只工作了一半(会重定向到正确的主机但不会提供页面),但是当我尝试撤消重定向时,它仍然存在(所以仍然领先到一个损坏的地址)。
我尝试覆盖它,尝试刷新 DNS,完全清除 apache2 并重新安装,但此重定向仍然存在。我 运行 没主意了。这不仅仅是我的浏览器缓存;我在多个外部 IP 上进行了测试,结果相同。
带有损坏的重定向的 .conf 如下(注意当前没有重定向处于活动状态),此 conf 也不再处于活动状态。
<VirtualHost *:80>
ServerName www.example.com
ServerAdmin webmaster@localhost
#DocumentRoot /var/www/html
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
#Redirect / https:/address.com
#Redirect permanent / https://address.com
#RedirectRewriteEngine On
#RewriteCond %{HTTPS} !on
#RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
唯一活跃的虚拟主机是我真正想要工作的主机,如下所示:
<VirtualHost *:80>
ServerName www.example.com
Redirect / https://example.com/
</VirtualHost>
<VirtualHost *:443>
ServerName address.com
ServerAlias www.address.com
ServerAlias *.address.com
ServerAdmin webadmin@localhost
DocumentRoot /disk2/example_site
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile example.crt
SSLCertificateKeyFile example.key
SSLCACertificatePath /example/
</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
而且,重定向仍然存在。
//这应该是评论
这应该对你有帮助。
Redirect permanent / https://www.your_site_name_here.com/
我看了,你试试这个。
你能 post 整个 apache 配置吗?
切勿使用永久重定向。
如您所见,将其从您的服务器中删除并不会删除任何已访问该页面的浏览器的重定向。该指令始终由浏览器无限期缓存。
随后的重写规则意味着您将为 http 请求提供 https 响应 - 这显然是无意义的。
将 [L,R] 添加到最后一行(不是堆栈溢出中其他地方建议的 R=301)。如果您真的要永久彻底地取消非 SSL,请使用 HSTS。
(顺便说一句,修复您需要直接干扰缓存数据库或删除并重新安装的浏览器)
在配置或 Web 应用程序中删除对永久重定向的任何引用,具体取决于您在何处执行此操作。
然后,只需清除您的浏览器缓存整体。如果不行,也清除浏览器数据。
是客户端的问题,不是服务器的问题。如果您不确定自己在做什么,切勿使用 301 或 308 重定向,它们将被无限期缓存。
我完全被难住了。我试图将所有 http 请求转发到 https(因此端口 80 到 443)。我厌倦了一些方法,包括
Redirect / https:/address.com
Redirect permanent / https://address.com
RedirectRewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
在我尝试永久重定向后,它终于发生了,但是转发只工作了一半(会重定向到正确的主机但不会提供页面),但是当我尝试撤消重定向时,它仍然存在(所以仍然领先到一个损坏的地址)。
我尝试覆盖它,尝试刷新 DNS,完全清除 apache2 并重新安装,但此重定向仍然存在。我 运行 没主意了。这不仅仅是我的浏览器缓存;我在多个外部 IP 上进行了测试,结果相同。
带有损坏的重定向的 .conf 如下(注意当前没有重定向处于活动状态),此 conf 也不再处于活动状态。
<VirtualHost *:80>
ServerName www.example.com
ServerAdmin webmaster@localhost
#DocumentRoot /var/www/html
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
#Redirect / https:/address.com
#Redirect permanent / https://address.com
#RedirectRewriteEngine On
#RewriteCond %{HTTPS} !on
#RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
唯一活跃的虚拟主机是我真正想要工作的主机,如下所示:
<VirtualHost *:80>
ServerName www.example.com
Redirect / https://example.com/
</VirtualHost>
<VirtualHost *:443>
ServerName address.com
ServerAlias www.address.com
ServerAlias *.address.com
ServerAdmin webadmin@localhost
DocumentRoot /disk2/example_site
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile example.crt
SSLCertificateKeyFile example.key
SSLCACertificatePath /example/
</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
而且,重定向仍然存在。
//这应该是评论
这应该对你有帮助。
Redirect permanent / https://www.your_site_name_here.com/
我看了,你试试这个。 你能 post 整个 apache 配置吗?
切勿使用永久重定向。
如您所见,将其从您的服务器中删除并不会删除任何已访问该页面的浏览器的重定向。该指令始终由浏览器无限期缓存。
随后的重写规则意味着您将为 http 请求提供 https 响应 - 这显然是无意义的。
将 [L,R] 添加到最后一行(不是堆栈溢出中其他地方建议的 R=301)。如果您真的要永久彻底地取消非 SSL,请使用 HSTS。
(顺便说一句,修复您需要直接干扰缓存数据库或删除并重新安装的浏览器)
在配置或 Web 应用程序中删除对永久重定向的任何引用,具体取决于您在何处执行此操作。
然后,只需清除您的浏览器缓存整体。如果不行,也清除浏览器数据。
是客户端的问题,不是服务器的问题。如果您不确定自己在做什么,切勿使用 301 或 308 重定向,它们将被无限期缓存。