在我的旧主机上,添加域名时,我可以选择是否需要http://www.domain
、http://domain
或者两者(例如,如果我选择 www.domain,它会将http://domai
n 重定向到http://www.com
。)
无需编辑 .htaccess 即可实现此目的吗? 就像在 vosts.conf 中一样?
另外,如果通过 .htaccess 进行操作,最好的方法是什么?
RewriteCond %{HTTP_HOST} .
RewriteCond %{HTTP_HOST} !^www\.example\.com [NC]
RewriteRule (.*) http://www.example.com/$1 [R=301,L]
?我读到过,如果没有第一行,http/1.0 浏览器将会失败(因为它们没有在标头中包含主机)
答案1
如果您没有使用 SSL,那么您也可以使用基于名称的虚拟主机来发出重定向。其中一个虚拟主机将是所需的虚拟主机,另一个将是您的重定向。
<VirtualHost XXX.XXX.XXX.XXX>
ServerName old.com
ServerAlias www.old.com
Redirect permanent / http://www.new.com/
</VirtualHost>
<VirtualHost XXX.XXX.XXX.XXX>
ServerName www.new.com
<Directory /var/www/www.new.com>
</Directory>
</VirtualHost>
请参阅以下站点上的#6:http://www.yolinux.com/TUTORIALS/ApacheRedirect.html
答案2
您可以将任何可以放入 .htaccess 中的内容放入<Directory/>
您想要更改的站点的 VirtualHost 配置中的一节中 - .htaccess 只是执行此操作的一种快捷方式。
例如,您可以像这样扩展 Virtualhost 指令:
<VirtualHost x.x.x.x:80>
ServerName something.com
ErrorLog logs/something.com-error.log
###### Add the 5 lines below.... ######
<Directory /var/www/something.com/html>
RewriteCond %{HTTP_HOST} .
RewriteCond %{HTTP_HOST} !^www\.example\.com [NC]
RewriteRule (.*) http://www.example.com/$1 [R=301,L]
</Directory>
</VirtualHost>
正如您提到的“vhost.conf”,我假设您正在使用 Plesk 服务器,在这种情况下,您只需将该<Directory/>
节添加到 vhost.conf 即可(记住将路径修复到您网站的 httpdocs 目录)。
记住之后运行/usr/local/psa/admin/bin/websrvmng -a
并重新启动 Apache。