【发布时间】:2014-11-11 18:46:42
【问题描述】:
我的网站上有以下规则:
- 在所有页面上强制使用 HTTPS。
- 将http://user.domain.com 重定向到https://www.domain.com/file.php?user=user
我现在遇到的问题是,当有人转到 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.com和www.domain.com的 DocumentRoot 是否指向同一个目录? -
user.domain.com 只是一个别名..
标签: apache .htaccess mod-rewrite redirect