如何让两个域名指向同一个网站,一个 http,另一个 https

如何让两个域名指向同一个网站,一个 http,另一个 https

我目前正在进行重写工作example.com,整个网站都是 HTTPS,使用如下命令:

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

我需要这个网站上的大量文件,可以通过第二个域名和 HTTP 访问,例如:http://example.net/files/....

我尝试添加example.netServerAlias 当然这只是重定向然后重写为https://example.net/files

我从互联网上复制了重写规则,但不确定修改它的正确方法。

我正在考虑将重写规则改为如下内容:

RewriteRule ^example.com/?(.*) https://example.com/$1 [R,L]

这样,只有当 URL 包含以下内容时才会重写example.com ,那么我是否需要针对 TLD 域本身而不是这个通配符条目的重写规则?

请问有人能帮忙以正确的方式实现这一点,以便对ServerAliasexample.net)的请求不会被重写吗?

答案1

如果你想将两个域名指向相同的内容。例如example.comexample.net。然后为每个域名创建单独的虚拟主机,但将它们指向相同的文档根目录. 添加一个用于 HTTP 的 80 VirtualHost 条目 ( http://example.com) 和另一个用于 HTTPS 的 443 域条目 ( https://example.net),并分配所需的 SSL 条目。

答案2

正如 Sunil 所建议的,您可以创建单独的虚拟主机,然后 SSL 重定向将仅发生在第一个虚拟主机(即example.com端口 80)中。(您也可以避免使用 mod_rewrite 而只使用单个 mod_alias Redirect,这将是更好的选择。)

ServerAlias不过,你也可以按照你的建议创建一个example.net(你的其他域)并包含状况(即REwriteCond指令)在当前重定向中仅重定向域example.com。例如:

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com [NC]
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]

请注意,一旦您确认它运行正常,这实际上应该是一个 301(永久)重定向。即[R=301,L]。。

相关内容