首页 > 解决方案 > 重定向到 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]

我不确定这是否与我的手机提供商或重定向有关。对此的任何帮助将不胜感激。谢谢!

标签: php.htaccessredirectjoomla3.0

解决方案


“无法连接到服务器”/“连接超时错误”

这些是网络/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]

推荐阅读