移动到 https://www,当它是 www 或 http:// 或没有 www 和 http:// 时?

Posted

技术标签:

【中文标题】移动到 https://www,当它是 www 或 http:// 或没有 www 和 http:// 时?【英文标题】:Move to https://www, when it is www or http:// or without www and http://? 【发布时间】:2019-06-01 15:36:04 【问题描述】:

我正在使用 Zend 框架,其中有漂亮的 url 控制器。跟随 .htaccess 是有效的,但它使 SEO 将我们视为一页的四个链接。

RewriteEngine On
RewriteCond %REQUEST_FILENAME -s [OR]
RewriteCond %REQUEST_FILENAME -l [OR]
RewriteCond %REQUEST_FILENAME -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
RewriteCond %HTTPS !=on
RewriteRule ^ https://%HTTP_HOST%REQUEST_URI [L,R]

我需要使用 htaccess 进行以下修复:

www.***.com/nice-looking-url = https://www.***.com/nice-looking-url

***.com/nice-looking-url = https://www.***.com/nice-looking-url

http://www.***.com/nice-looking-url = https://www.***.com/nice-looking-url

http://***.com/nice-looking-url = https://www.***.com/nice-looking-url

如何正确使用 htaccess?这样上面的输入网址就可以安全地使用https://www 登陆。总是在前面?

【问题讨论】:

【参考方案1】:

像这样拥有完整的 .htaccess:

RewriteEngine On

## add www and turn on https in same rule - main domain
RewriteCond %HTTP_HOST !^www\. [NC,OR]
RewriteCond %HTTPS !on
RewriteCond %HTTP_HOST ^(?:www\.)?(example\.com)$ [NC]
RewriteRule ^ https://www.%1%REQUEST_URI [R=301,L,NE]

## turn on https in same rule - sub domain
RewriteCond %HTTPS !on
RewriteRule ^ https://%HTTP_HOST%REQUEST_URI [R=301,L,NE]

RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule ^ index.php [L]

确保使用新浏览器测试您的更改以避免旧浏览器缓存。

【讨论】:

1 个问题。我有几个子域。应用您的版本后,除了所有子域之外的所有工作都变成这样:https://www.sms.domain.com/otherclients 而不是保持为https://sms.domain.com/otherclients 所以你不想在子域之前使用 www,但在主域之前想要 www? 没错。 https://www.example.comhttps://subdomain1.example.com 应保留在子域中,因为使用了一些随机 DNS 路由。 当我尝试http://example.com 时,它会转到https://example.com 而不是https://www.example.com

以上是关于移动到 https://www,当它是 www 或 http:// 或没有 www 和 http:// 时?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 Web.config 或 C# 将所有内容重定向到 https://www。网站的版本?

https 非 www 重定向

同一个网址,电脑手机访问显示不同的内容(Apache配置)

Nginx:将非www重定向到www https

PHP:将主域重定向到https:// www,子域重定向到https://(不带www)

自动SSL或加速ssl无法在heroku上运行