Apache从site-domain.comredirect到www.site-domain.com

我希望每当我们访问site-domain.com它应该被redirect到https://www.site-domain.com/users/sign_in 。

这是我的configuration

<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] 

我不能testing这个网站不能下去。

所以会是这样的

 <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,但不能site-domain.com。 我们是否需要DNS中的site-domain.com条目? 我真的很感激任何帮助。

提前致谢

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

如果它不解决,它不会工作。

  $ vi .htaccess 

追加以下configuration代码:

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

保存并closures文件。 以上代码将把用户redirect到www.domain.comurl。

这里有多个步骤来获得所需的结果。

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

  • 您将需要configurationApache来parsing这两个域。 通过使用Apache的DomainName和ServerAlias选项。

      ServerName domain.comServerAlias www.domain.com 

  • 那么你将需要使用Abishek的规则来强制redirect。

     重写引擎
     RewriteCond%{HTTP_HOST} ^域\ .com
     RewriteRule ^(。*)$ http://www.domain.com/$1 [R = permanent,L] 
  • 如果您使用的是SSL,那么您将需要一个SSL证书,该证书可以提供www和该域的非www版本的覆盖范围。 如果您订购www.domain.com,大多数供应商将包含domain.com。