Apache www HTTPS重定向

时间:2017-08-15 01:59:17

标签: apache .htaccess redirect

我想将所有形式的网址中的所有流量重定向到 https没有www

我在另一篇文章中发现了这个代码,它适用于https,但它添加了www

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule .* https://www.example.com%{REQUEST_URI} [R=301,L]


RewriteCond %{HTTP_HOST} !^www\.
RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

我尝试从上面的第一个RewriteRule中删除www,但它仍然重定向到www

我可以改变任何想法,让重定向转到没有www

的https

2 个答案:

答案 0 :(得分:0)

使用.htaccess进行重定向现在是一种过时的方式来重定向这样的请求,according to apache。相反,您应该在vhost文件中使用Intent.FLAG_ACTIVITY_NEW_TASK

Redirect

答案 1 :(得分:0)

出现这种情况有两个原因。

  1. 在您的第一套规则中,您重定向到www,所以只需将其更改为:

    RewriteRule ^(.*)$ https://example.com%{REQUEST_URI} [R=301,L]
    
  2. 您的第二组规则实际上是检查www是否未启用,以及是否要强制www。将规则更改为以下内容:

    RewriteCond %{HTTP_HOST} ^www\.
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
    
  3. 所以上面现在检查www是否打开 - 如果是,那么它将删除它。

    但是,您可以将这两个规则结合起来,而不是将它们分开:

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

    确保在测试之前清除缓存。