www url重写不工作(阅读所有其他主题)

时间:2014-01-25 18:17:18

标签: apache mod-rewrite

我想重写

example.com to www.example.com

我在apache2.conf中的代码(Linux / ubuntu 32位中apache的主配置文件):

尝试1:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^example.com [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]

重启Apache代码不起作用!

尝试2:

<IfModule mod_rewrite.c> 
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example.com [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
</IfModule> 

重启Apache代码不起作用!

尝试3:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www.example.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]

重启Apache代码不起作用!

apache中的已加载模块显示:

rewrite_module (shared)

我该如何解决这个问题?

还有其他mod我必须启用(我不这么认为)。

我必须将此代码放在其他文件中吗?

是否必须使用.htaccess进行网址重写?

1 个答案:

答案 0 :(得分:1)

你的规则没问题。

  1. 确保规则位于“example.com”域的 virtualhost 中。如果您没有“example.com”vhost,请将规则放在第一个vhost容器中。小号

    <VirtualHost *:80>
        ServerName example.com
        ....
    
        RewriteEngine On
        RewriteCond %{HTTP_HOST} ^example.com [NC]
        RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
    
        ....
    </VirtualHost>
    
  2. 尝试将规则放在目录容器中:

    <Directory "/var/www/path/of/your/document_root/">
        RewriteEngine On
        RewriteCond %{HTTP_HOST} ^example.com [NC]
        RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
    </Directory>