将没有www的网站重定向到www并不起作用

时间:2014-07-01 23:24:48

标签: apache .htaccess mod-rewrite redirect

我想在我的新服务器上将我的网站domain.com重定向到www.domain.com,但它不起作用。我尝试使用虚拟主机和.htaccess但没有成功。你知道这是什么问题吗?

我的主人

<VirtualHost *:80>
ServerName www.domain.com

    DocumentRoot /var/www/domain

    <Directory "/var/www/domain">
        Options -Indexes MultiViews
        AllowOverride All
        Order allow,deny
        Allow from all
        Options +FollowSymlinks
        RewriteEngine On
        RewriteBase /
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_FILENAME} !-l
        RewriteRule .* index.php 
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/domain-error.log


</VirtualHost>

<VirtualHost *:80>
ServerName domain.com

RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain.com [NC]
RewriteRule ^/(.*)$ http://www.domain.com/$1 [L,R=301]
RewriteRule ^(.*)index.(htm|html|php|asp)$ /$1 [R=301,L]
</VirtualHost>

1 个答案:

答案 0 :(得分:0)

如果这是Apache 2.2,则需要为此站点的IP地址指定NameVirtualHost,以便同时使用两个VirtualHost块。

否则,Apache将选择与IP地址和端口匹配的第一个,忽略ServerName和ServerAlias行(如果没有ServerName或ServerAlias与请求匹配,则会发生相同的情况)。

This directive is no longer necessary in Apache 2.4但是,如果你正在运行它,请忽略这个答案。

或者,由于您的域重写已经测试了HTTP_HOST,因此您可以将其移动到与其他规则和内容相同的VirtualHost块中。确保将其放在操纵URL的其他规则之前。