【发布时间】:2020-01-09 02:25:28
【问题描述】:
我如何明确彻底地阻止 WordPress 将所有 URL 从 HTTP 重写为 HTTPS?
我需要在测试服务器上设置它并在没有 SSL 证书的情况下在仅限内部的服务器上运行,这样我就可以测试 PHP 7.2,它使用我的插件组合破坏了我的实时 WP 站点。
我在不同的服务器上获得了该站点的副本,但我无法让它停止在每个链接上使用 HTTPS——它当前无法加载,因为它一直在请求 HTTPS,但没有加载证书或设置使用 HTTPS 和 apache 的测试服务器甚至没有监听该测试服务器上的 443 端口。
已经将 wp-config.php 中的 WP_HOME 和 WP_SITEURL 更改为引用 HTTP,并使用测试服务器的 IP 而不是站点域名。也放进去
define(‘FORCE_SSL_ADMIN’, false);
define(‘FORCE_SSL’,false);
将 DB 转储到磁盘,截断活动表,然后将所有出现的 https://domainname.com 文本替换为转储文件中的 http://192.168.0.1(例如),并将每个表的数据重新加载回其中以消除对数据库中任何 URL 中的“https”。
把它放在我的 .htaccess 中(它会被解析,因为我可以通过将 crud 放入其中来使测试服务器的 httpd 崩溃):
.
.
RewriteCond %{SERVER_PORT} ^443$
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]
RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
.
.
所以:
.htaccess 故意将任何对端口 443 或 HTTPS 的请求重写为 HTTP。
/var/www/html 文件夹中有一个 index.htm 和 index.html 通过元刷新标签指定 192.168.0.1/index.php。
wp-config 为 WP_HOME 和 WP_SITEURL 指定“http://192.168.0.1”和 FORCE_SSL_* 设置为“false”。
但是,在浏览器中引用
http://192.168.0.1 or http://192.168.0.1/index.php
总是有结果
https://192.168.0.1
在浏览器地址栏中被重写,然后浏览器停止并报告该页面无法访问。已清除缓存并且可以插入任意“die(...”命令,如果我 CTRL F5 可以看到它们呈现,因此浏览器缓存不是一个因素。
我只想测试 PHP 7.2 是否会破坏我的网站——在没有 HTTPS 的测试服务器上。
除了 .htaccess、wp-config.php 和关联的 MySQL 数据库之外,当在 Web 浏览器中直接引用测试服务器的 192.168.0.1 IP 时,仍然强制 WP 使用 HTTPS 而不是 HTTP?
我只需要 WP 来实际使用
并坚持这样做,而不是每次都这样做https://192.168.0.1
预期的结果是在测试服务器的浏览器地址栏中看不到 WordPress 中的 URL 从 http:// 重写为 https://。
斯蒂芬
【问题讨论】:
-
如果 url 是好的,你是否检查过 "site_url" 和 "home" 的表 wp_options 内?
-
“.htaccess 故意将任何对端口 443 或 HTTPS 的请求重写为 HTTP。” - 如果您的服务器不响应,这当然是完全没有意义的尝试首先是 HTTPS 请求。
-
显然 - 但我正处于尝试完全没有意义的事情的地步,因为已经尝试了几天的其他事情并且没有结果。
-
好吧,我可以访问 192.168.0.1/readme.html 并获得标准的 wordpress 自述文件 - 所以服务器在那里并监听 HTTP 并响应 - wp-config 中的“site_url”和“home” .php 设置为 http://"192.168.0.1/index.php" 减去双引号。
标签: php wordpress http https url-rewriting