在 apache 中,无需 .htaccess,即可从 www.domain.com 重定向到 http://domain.com?

在 apache 中,无需 .htaccess,即可从 www.domain.com 重定向到 http://domain.com?

在我的旧主机上,添加域名时,我可以选择是否需要http://www.domainhttp://domain或者两者(例如,如果我选择 www.domain,它会将http://domain 重定向到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。

相关内容