我们有一个 VPS 托管 2 个网站。WebsiteA.com 有 SSL。
WebsiteB.com 没有 SSL,但 Google 使用 WebsiteA.com 的 HTTPS URL 为 WebsiteB.com 编制索引
例子:https://www.websiteB.com/url-from-website-A它当然不存在并会出现错误,但谷歌会对其进行索引。
重复的不仅仅是一个 URL,而是网站 A 的每个 URL。
我们认为这会对 SEO 产生影响(以某种方式重复内容),因为我们的排名下降了。
VPS 配置错误?我们使用 Ubuntu / Apache。
<VirtualHost *:80>
ServerName websiteA.com
ServerAlias www.websiteA.com
Redirect permanent / https://www.websiteA.com/
</VirtualHost>
<VirtualHost *:443>
ServerName websiteA.com
Redirect permanent / https://www.websiteA.com/
</VirtualHost>
<VirtualHost *:443>
DocumentRoot /var/www/websiteA.com/public/
ServerName www.websiteA.com
php_flag display_errors On
php_value memory_limit 256M
php_value error_reporting 2047
php_value post_max_size 32M
php_value upload_max_filesize 32M
<Directory /var/www/websiteA.com/>
Require all granted
AllowOverride All
Options +FollowSymLinks
</Directory>
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/websiteA.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/websiteA.com/privkey.pem
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /var/www/websiteB.com
ServerName websiteB.com
ServerAlias www.websiteB.com
<Directory /var/www/websiteB.com/>
Require all granted
AllowOverride All
Options +FollowSymLinks
</Directory>
</VirtualHost>
答案1
那么,当有人通过以下方式访问 Apache 时,它必须提供某些服务https://websiteB.com。因此它使用来自网站 A 的现有内容。
这是Apache 文档中有详细解释,下面引用其中一段:
每当在多个虚拟主机中列出最具体的 IP 地址和端口组合匹配时,Apache 就会根据客户端提供的 HTTP 主机标头自动进行区分。
ServerName 指令可以出现在服务器定义中的任何位置。但是,每次出现都会覆盖前一次出现(在该服务器内)。如果没有指定 ServerName,服务器会尝试从服务器的 IP 地址推断出它。
配置文件中针对给定 IP:端口对的第一个基于名称的虚拟主机非常重要,因为它用于在该地址和端口上接收的所有请求,而对于该 IP:端口对,没有其他虚拟主机具有匹配的 ServerName 或 ServerAlias。如果服务器不支持服务器名称指示,它也用于所有 SSL 连接。
(我突出显示)
在端口 443 上为网站 B 添加 VirtualHost,并将其指向正确的文档根目录。如果您没有证书,请使用网站 A 的证书。访问该网站的人将收到有关证书无效的警告,但他们现在无论如何都会收到该警告。如果他们选择忽略无效证书,至少他们(和搜索引擎)会获得正确的内容。
但是有了 Let's Encrypt,现在没有理由不提供有效的证书。
或者你可以配置重定向https://websiteB请求到 http,但访问者在重定向之前仍会收到证书警告。正如我所说,对于网站 B 来说,使用 Let's Encrypt 证书将是最简单的解决方案,对管理层和访问者来说都是如此。