我如何强制我的 URL 始终以 www 开头?

我如何强制我的 URL 始终以 www 开头?

我希望确保用户www.mydomain.com即使通过别名访问也能访问mydomain.com。这样我就可以控制子域上的 cookie,并且 Google 会看到一个单一的域,而不是一堆杂乱的 URL。

我怎样才能用 apache 做到这一点?

答案1

<VirtualHost ip:80>
   ServerName domain.com
   RedirectMatch permanent ^(.*)$ http://www.domain.com$1
</VirtualHost>

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

   ... usual config
</VirtualHost>

答案2

将其添加到您的httpd.conf文件中:

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

答案3

启用 mod_rewrite 支持,然后在您的域的根文件夹中创建一个 .htaccess 文件,其中包含以下内容:

<IfModule mod_rewrite.c>
   Options +FollowSymLinks
   Options +Indexes
   RewriteEngine On
   RewriteBase /
   RewriteCond %{HTTP_HOST} ^domain\.com$
   RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]
</IfModule>

答案4

我遇到了相反的问题,当我只想直接从 domain.com 提供服务时,人们却访问 www.domain.com:

<VirtualHost *:80>
   ServerName domain.com

   ... usual config
</VirtualHost>

<VirtualHost *:80>
   ServerName www.domain.com
   ServerAlias sub.domain.com # can also catch some other subdomains
   ServerAlias *.domain.com # or all previously unmatched domains

   Redirect permanent / http://domain.com/
</VirtualHost>

正如 Greg Hewgill 提到的,使用 Redirect 比 RedirectMatch 简单一点,而且做同样的工作,请参见http://httpd.apache.org/docs/2.0/mod/mod_alias.html#redirect更多细节。

相关内容