【问题标题】:Redirect all .org .ca .net domains to main domain将所有 .org .ca .net 域重定向到主域
【发布时间】:2019-11-01 19:23:01
【问题描述】:

我们的服务器设置是 ubuntu 上的 apache2。

我们已经购买了 example.com、example.ca、example.org 和 example.net。我正在尝试将这些示例的所有版本重定向到我们的 https://www.example.com,同时尽量保持 DRY。我发现了许多将 http 重定向到 https 或 www 的示例。到非 www。但是我找不到太多关于发送的一般捕获所有规则:

http://www.example.ca
http://example.ca
https://example.ca
https://www.example.ca

(与上述.org、.net 和.com 相同)

全部发给https://www.example.com

我已将以下规则添加到我们的 000-default.conf 文件中。我想知道是否有更简洁的方法来编写这些规则以更好地重定向到https://www.example.com,我也在寻求帮助,将所有示例的所有 https 请求重定向到https://www.example.com。如果我出去吃午饭,请告诉我。

提前感谢您的帮助。

000-default.conf

# Redirect .net to .com
<VirtualHost *:80>
    ServerName www.example.net
  ServerAlias example.net
  RewriteEngine on
    RewriteCond %{HTTP_HOST} ^(www\.)?example\.(net)$ [NC]
    RewriteRule ^ http://www.example.com%{REQUEST_URI} [L,R=301]
</VirtualHost>

# Redirect .org to .com
<VirtualHost *:80>
    ServerName www.example.org
  ServerAlias example.org
  RewriteEngine on
    RewriteCond %{HTTP_HOST} ^(www\.)?example\.(org)$ [NC]
    RewriteRule ^ http://www.example.com%{REQUEST_URI} [L,R=301]
</VirtualHost>

# Redirect .ca to .com
<VirtualHost *:80>
    ServerName www.example.ca
  ServerAlias example.ca
  RewriteEngine on
    RewriteCond %{HTTP_HOST} ^(www\.)?example\.(ca)$ [NC]
    RewriteRule ^ http://www.example.com%{REQUEST_URI} [L,R=301]
</VirtualHost>

# Redirect back to example.com
<VirtualHost *:80>
    ServerName www.example.com
    ServerAlias example.com
    RewriteEngine on
  RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R,L]
</VirtualHost>

# Enable ssl certifications
<VirtualHost *:443>
    DocumentRoot /var/www/html
    ServerName www.example.com
    ServerAlias example.com
    SSLEngine on
    SSLCertificateFile path to chain
    SSLCertificateKeyFile path to key
</VirtualHost>

【问题讨论】:

  • 您是否拥有一份包含所有域名的 SSL 证书?
  • 是的,我们有一个。

标签: apache redirect apache2


【解决方案1】:
# Redirect anything http:// to https://www.example.com
<VirtualHost *:80>
    ServerName www.example.com
    ServerAlias example.com example.net www.example.net example.org www.example.org example.ca www.example.ca
    RewriteEngine on
    RewriteRule ^ https://www.example.com%{REQUEST_URI} [L,R=302]
</VirtualHost>

<VirtualHost *:443>
    ServerName www.example.com
    ServerAlias example.com example.net www.example.net example.org www.example.org example.ca www.example.ca
    SSLEngine on
    SSLCertificateFile path to chain
    SSLCertificateKeyFile path to key
    RewriteEngine on
    # Redirect anything not www.example.com to https://www.example.com
    RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
    RewriteRule ^ https://www.example.com%{REQUEST_URI} [L,R=302]
</VirtualHost>

确认它按预期工作后,将302 替换为301

【讨论】:

  • 感谢您的回答。这看起来是一个更清洁的解决方案。虽然所有 url 都被重定向到 example.com。如果我输入example.ca,我仍然不会被重定向。也许我们的证书有问题
猜你喜欢
  • 2015-01-04
  • 2015-02-13
  • 2016-02-10
  • 1970-01-01
  • 2017-04-22
  • 2014-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多