我想重写
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进行网址重写?
答案 0 :(得分: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>
尝试将规则放在目录容器中:
<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>