【问题标题】:.htaccess redirect subdomain before forcing HTTPS?.htaccess 在强制 HTTPS 之前重定向子域?
【发布时间】:2014-11-11 18:46:42
【问题描述】:

我的网站上有以下规则:

我现在遇到的问题是,当有人转到 http://user.domain.com 时,他们会被重定向到 https://user.domain.com ,这是不安全的,而不是 https://www.domain.com/file.php?user=user

我该如何解决这个问题?

这是 .htaccess 的内容:

RewriteEngine On

RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com$ [NC]
RewriteRule ^.*$ - [L]
RewriteCond %{HTTP_HOST} ^(.*?)\.(www\.)?domain\.com$ [NC]
RewriteRule ^.*$ https://www.domain.com/file.php?user_id=%1 [L]

我也尝试将 %{HTTP_HOST} 更改为 %{HTTPS_HOST} 并最终遇到同样的问题。

【问题讨论】:

  • they get redirected to 在哪里?
  • 您是否尝试过重新排序规则?先重定向到页面,再重定向到https版本的页面?我现在无法测试它,所以不能保证! (也可以重定向到.htaccess中的页面,然后用PHP重新加载为HTTPS)
  • 修复了我的帖子以包括他们被重定向到的位置。是的,我尝试将 HTTPS 放在第二条规则之后,但这导致了同样的问题。
  • http://user.domain.com to https://www.domain.com/file.php?user=user 不会是内部重写,因为您正在更改域。 user.domain.comwww.domain.com 的 DocumentRoot 是否指向同一个目录?
  • user.domain.com 只是一个别名..

标签: apache .htaccess mod-rewrite redirect


【解决方案1】:

尝试:

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

RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^(.*?)\.(www\.)?domain\.com$ [NC]
RewriteRule ^.*$ https://www.domain.com/file.php?user_id=%1 [L]

【讨论】:

    【解决方案2】:

    你可以使用这些规则:

    RewriteEngine On
    
    RewriteCond %{HTTPS} off
    RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]
    
    RewriteCond %{HTTP_HOST} !^www\.
    RewriteCond %{HTTP_HOST} ^([^.]+)\.domain\.com$ [NC]
    RewriteRule ^ /file.php?user_id=%1 [L,QSA]
    

    【讨论】:

      猜你喜欢
      • 2019-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-03
      • 2014-01-25
      • 2016-09-05
      • 2014-01-20
      相关资源
      最近更新 更多