我希望每当我们访问 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。