apache - 将所有 .org .ca .net 域重定向到主域
问题描述
我们的服务器设置是 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 相同)
我已将以下规则添加到我们的 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>
解决方案
# 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
.
推荐阅读
- regex - 如何在 sed 命令中匹配正则表达式 1 到 3 次?
- mongodb - 嵌套文档数组上的 MongoDB 条件查询
- c++ - 与 int 相比,double 数据类型如何在 C++ 中大量改变答案?
- oracle - 任务管理器的批处理错误级别问题
- neural-network - 计算神经网络中的参数个数
- javascript - 通过键对对象数组重新排序,其中一个在固定位置并更新其兄弟键
- python - 将开始和结束时间作为过滤器应用于数据框
- c++ - 使用 std::mutex 时遇到问题
- c# - 如何在 Azure 数据工厂的 Databricks 上运行 .Net spark 作业?
- javascript - JS - 当输入有值时向表单添加类