繁体   English   中英

通过htaccess将所有http和https非www URL重定向到https://www.xyz.com

[英]Redirect all http AND https non-www URLS to https://www.xyz.com via htaccess

由于太长而且复杂的原因(它涉及多层公司繁文缛节导致其他人不购买我要求的通配符SSL证书),我必须设置一个域以将所有请求重定向到https:// www .xyz.com - 使用www子域的安全协议。

所以: http://xyz.comhttp://www.xyz.comhttps://xyz.com都应该重定向到https://www.xyz.com

我的.htaccess-fu充其量是弱的,我似乎无法让它发挥作用。 注意:如果有所不同,托管在Media Temple上。

到目前为止,我的.htaccess文件看起来像这样:

RewriteEngine On
RewriteCond %{HTTPS} !^on$
RewriteRule (.*) https://www.xyz.com/$1 [R,L]

RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

http://xyz.comhttp://www.xyz.com都重定向到https://www.xyz.com ,所以你好。 但是, https://xyz.com 不会重定向到https://www.xyz.com ,因此会抛出一个安全警告页面:

这可能不是您要找的网站!
您试图访问xyz.com ,但实际上您已经到达了一个服务器,将自己标识为www.xyz.com 这可能是由服务器上的配置错误或更严重的问题引起的。 您网络上的攻击者可能会试图让您访问xyz.com的假(且可能有害)版本。
您不应该继续,特别是如果您之前从未见过此网站的此警告。

让我超越这一个最后一个驼峰的任何帮助将非常感谢!

这是非常可能的。 使用以下代码。 这对我有用。

RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI}$1 [R=301,L]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI}$1

如果未来的任何人(HELLO PEOPLE OF THE FUTURE)偶然发现了这个问题,我会问同样的问题并在服务器故障处得到解答。

短版:不可能。

长版: https//serverfault.com/questions/523199/redirect-all-http-and-https-non-www-urls-to-https-www-example-com-via-htaccess

即使这个问题很老。

如果发现它搞砸了完全相同的问题。 在此处提供的代码后没有帮助。 我试过试过。

这个对我有用:

     RewriteCond %{HTTPS} off
     RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
     RewriteRule .* https://%1%{REQUEST_URI} [R=301,L]
     RewriteCond %{HTTPS} off
     RewriteCond %{HTTP_HOST} !^www\. [NC]
     RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
     RewriteCond %{HTTPS} on
     RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
     RewriteRule .* https://%1%{REQUEST_URI} [R=301,L]

修复了没有任何循环或其他错误的问题。 也许它会帮助别人。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM