php - 重定向到 https 和目录不适用于移动 LTE/3G 连接
问题描述
我有一个 Joomla 网站,有时该网站无法加载移动数据。如果我清除浏览器并尝试在 LTE 上加载网站,它不会加载,然后我切换到 3g,它会加载。然后同样的事情发生在 3G 上。我清除了浏览器,网站无法加载,我切换到 LTE,网站加载。我对家庭/办公室 wifi 没有任何问题。
该站点和所有插件都是最新的,然后我禁用了任何未使用的插件。
我得到“Safari 无法打开页面,因为它无法连接到服务器。”
如果我尝试在没有 https 或 home1 的情况下访问 sundenmanagement.com,我会收到“连接超时错误”
我有以下代码,请注意我不是这方面的专家。我确实有两个 htaccess 文件,一个在 htdocs 中,它是 home1 文件夹中的一个副本。
我正在尝试将所有流量重定向到 https 和 /home1/index.php 然后需要弄清楚如何删除 www。如果已添加。
index.php4 - 在 htdocs 中
<?php header('Location: https://sundenmanagement.com/home1/');exit;?>
htaccess - 它是 Joomla htaccess 文件,它位于 ## Begin - 自定义重定向的位置。
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://sundenmanagement.com/home1/$1 [L,R=301]
我不确定这是否与我的手机提供商或重定向有关。对此的任何帮助将不胜感激。谢谢!
解决方案
“无法连接到服务器”/“连接超时错误”
这些是网络/DNS 错误,与您的服务器端代码/重定向没有任何关系,因为请求甚至没有到达您的服务器。
话虽如此,客户端会缓存 301 重定向,如果您尝试将所有请求重定向到 HTTPS +,那么您的重定向肯定是错误的/home1/
......
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] RewriteRule ^(.*)$ http://%1/$1 [R=301,L] RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] RewriteCond %{SERVER_PORT} 80 RewriteRule ^(.*)$ https://sundenmanagement.com/home1/$1 [L,R=301]
第一条规则从 www 重定向到非 www,但重定向到 HTTP,即使初始请求是 HTTPS。所以这将导致多次重定向。当在文件中使用时,这实际上会从 URL/home1/.htaccess
中删除子目录!/home1/
第二条和第三条规则执行相同的检查——请求是 HTTP 吗?所以第三条规则永远不会被处理,并且当在根目录中使用时,请求永远不会被强制/home1/
.
如果您不担心拥有“通用”解决方案(您在上面混合了通用/特定规则),那么在根目录中/.htaccess
您只需要强制/home1/
执行单个指令,您不需要任何其他指令,因为其他所有内容都会似乎是由/home1/.htaccess
文件处理的。例如:
# /.htaccess
RewriteEngine On
# Redirect everything to the "/home1/" subdirectory (HTTPS + non-www)
RewriteRule (.*) https://example.com/home1/$1 [R=301,L]
如果您想要一个“通用”重定向,而不明确包含域名,那么您可以将上述规则更改为以下规则,但是,这确实假设您没有任何其他子域(www 除外):
# Redirect everything to the "/home1/" subdirectory (HTTPS + non-www)
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.*?)\.?$ [NC]
RewriteRule (.*) https://%1/home1/$1 [R=301,L]
然后在/home1/.htaccess
文件中,您将拥有以下规范重定向以及您的其他 Joomla 指令。例如:
# /home1/.htaccess
# www to non-www (and HTTPS)
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [R=301,L]
# HTTP to HTTPS
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
推荐阅读
- c# - 是否可以使用“SSIS”将“FlatFile Source”上传到“CosmosDB”?(CoreSQL)总是得到这个错误
- python - 使用'splinter'在python中保存测试失败的屏幕截图
- ssas-tabular - ssas 表格模型使用角色,因此客户只能看到使用的供应商
- vb.net - 使用单引号或双引号设置字符串格式
- .net-core - 在 Swagger 中为 Ocelot 请求 URL 错误,例如 http://http://
- javascript - 是的 - 在错误消息中输出一个字段值
- c# - 在 Google Sheets API 中处理工作表更改
- bash - 如何修复 Git am 错误“.git/rebase-apply 仍然存在但 mbox 给定”?
- jwt - 用一种编程语言生成的 JWT 可以被另一种编程语言使用吗?
- docker - 使用 Docker-compose 时 VM 实例 google cloud nuget 依赖错误