16

我目前有 2 个域可以访问我服务器上的同一文件夹:metrikstudios.com 和 ziced.com。

我希望通过http://metrikstudios.com进入的用户被重定向到https://metrikstudios.com,并且通过http://ziced.com进入的用户不要被重定向到https://ziced.com .

我目前在我的 .htaccess 上有这个

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

谢谢

4

4 回答 4

36

您可以简单地添加另一个 RewriteCond 来检查主机是否为 metrikstudios.com

RewriteCond %{HTTP_HOST} ^metrikstudios\.com [NC]

它应该是这样的:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^metrikstudios\.com [NC]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI}
于 2012-08-06T20:36:05.723 回答
7

上面接受的解决方案仅将non-www域从重定向httphttps

如果您想重定向您的域的两个版本,www将以下内容放在您的 http 到 https 规则上方或 行之前:non-wwwsslRewriteCondRewriteCond %{HTTPS} off

RewriteCond %{HTTP_HOST} ^(www\.)?example.com$ [NC]

这是将特定域重定向到 https 的完整规则。

RewriteEngine on

# First we will check the host header (url)
#if it's www.example.com or example.com
RewriteCond %{HTTP_HOST} ^(www\.)?example.com$ [NC]
# now we will check the https header
# if https is off (Is non-ssl)
RewriteCond %{HTTPS} off
#redirect the request to https
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [NE,L,R=301]
于 2018-02-02T18:06:24.053 回答
1

有时您可能只想在实时服务器上重定向并保留其本地设置。例如,如果在本地机器上,您已经注册了名为的本地主机www.mysite.loc并在此主机上设置了项目的本地实例。

在这种情况下,这也可能对某人有所帮助:

RewriteEngine On
RewriteCond %{HTTPS} =off
RewriteCond %{HTTP_HOST} !.loc$ [NC]
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]

where !.loc$- 如果主机以 . 结尾,则忽略重定向到 https 的规则.loc

于 2018-12-05T06:55:40.960 回答
0

Linux 和 cPanel 基于 Linux 的帐户使用

.htaccess

处理重定向的文件。

注意:如果您需要创建 .htaccess 文件,可以使用控制面板的文件管理器(Web & Classic / cPanel)。

在您的 .htaccess 文件中使用以下代码会自动将访问者重定向到您网站的 HTTPS 版本:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
If you have an existing .htaccess file:

不要重复 RewriteEngine On。确保以 RewriteCond 和 RewriteRule 开头的行紧跟在已经存在的 RewriteEngine On 之后。

Windows 和 Plesk

基于 Windows 的帐户使用 web.config 文件来处理重定向。

注意:如果您需要创建 web.config 文件,您可以使用控制面板的文件管理器(Web & Classic / Plesk)。

在您的 web.config 文件中使用以下代码会自动将访问者重定向到您网站的 HTTPS 版本:

<configuration>
<system.webServer>
<rewrite>
    <rules>
    <rule name="HTTP to HTTPS redirect" stopProcessing="true"> 
    <match url="(.*)" /> 
    <conditions> 
        <add input="{HTTPS}" pattern="off" ignoreCase="true" />
    </conditions> 
    <action type="Redirect" redirectType="Permanent" url="https://{HTTP_HOST}/{R:1}" />
</rule>   
    </rules>
</rewrite>
</system.webServer>
</configuration>

如果您有现有的 web.config 文件:

确保您有以下部分(即开始和结束标签): system.webServer(包含重写) 重写(包含规则) 规则(包含一个或多个规则部分) 插入任何不存在的部分。在规则部分中插入整个规则部分,包括匹配、条件和操作。 注意:您正在将规则(不带“s”)插入规则(带“s”)部分。

于 2017-12-29T22:15:50.330 回答