Apache 从 site-domain.com 重定向到 www.site-domain.com

Apache 从 site-domain.com 重定向到 www.site-domain.com

我希望每当我们访问 site-domain.com 时,它都应该重定向到https://www.site-domain.com/users/sign_in

这是我的配置

<VirtualHost *:443>
ServerName www.site-domain.com
DocumentRoot /var/www/current/public

RailsEnv copsvpc

SSLEngine on
SSLOptions +StrictRequire
SSLCertificateFile /etc/apache2/ssl/certs/cert.crt
SSLCertificateKeyFile /etc/apache2/ssl/private/site-domainV2.key
SSLCertificateChainFile /etc/apache2/ssl/certs/inertermediateCA.crt

<Directory /var/www/current/public>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>

<Directory /var/www/current/public/Help>
RewriteEngine on
RewriteCond %{HTTP:Cookie} !help=([a-zA-Z0-9]+)
RewriteRule ^(.*)$ /users/sign_in [L,R]
</Directory>

</VirtualHost>

<VirtualHost *:80>
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R,L]
</VirtualHost>   

我是否应该简单地添加以下内容

ServerAlias site-domain.com
RewriteEngine On
RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R,L]

由于网站无法关闭,我无法测试这一点。

所以就像

<VirtualHost *:443>
ServerName www.site-domain.com
DocumentRoot /var/www/current/public
ServerAlias site-domain.com

RailsEnv copsvpc

SSLEngine on
SSLOptions +StrictRequire
SSLCertificateFile /etc/apache2/ssl/certs/cert.crt
SSLCertificateKeyFile /etc/apache2/ssl/private/site-domainV2.key
SSLCertificateChainFile /etc/apache2/ssl/certs/inertermediateCA.crt

RewriteEngine On
RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R,L]


<Directory /var/www/current/public>
 Options Indexes FollowSymLinks MultiViews
 AllowOverride None
 Order allow,deny
 Allow from all
</Directory>

<Directory /var/www/current/public/Help>
 RewriteEngine on
 RewriteCond %{HTTP:Cookie} !help=([a-zA-Z0-9]+)
 RewriteRule ^(.*)$ /users/sign_in [L,R]
</Directory>

</VirtualHost>

我可以 ping www.site-domain.com,但不能 ping site-domain.com。我们是否也需要在 DNS 中输入 site-domain.com?我非常感谢您的帮助。

提前致谢

答案1

是的,您需要 DNS 条目 www. 和 domain.com 都应指向您的网站 IP。

如果它不解决它就不会起作用。

答案2

 $ vi .htaccess

附加以下配置代码:

  RewriteEngine on
  RewriteCond %{HTTP_HOST} ^domain\.com
  RewriteRule ^(.*)$ http://www.domain.com/$1 [R=permanent,L] 

保存并关闭文件。以上代码将把用户重定向到 www.domain.com 网址。

答案3

这里有多个步骤来获得期望的结果。

  • 您必须拥有域名的 www 版本和非 www 版本的 DNS。

  • 您需要配置 Apache 来解析这两个域。通过使用 Apache 的 DomainName 和 ServerAlias 选项。

    服务器名称 domain.com服务器别名 www.domain.com

  • 然后您将需要使用 Abishek 的规则来强制重定向。

    RewriteEngine 开启
    RewriteCond %{HTTP_HOST} ^domain\.com
    重写规则 ^(.*)$ http://www.domain.com/$1 [R=permanent,L]
  • 如果您使用 SSL,那么您将需要一个 SSL 证书,该证书可同时覆盖域名的 www 版本和非 www 版本。如果您订购 www.domain.com,大多数供应商都会包含 domain.com。

相关内容