我希望确保用户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更多细节。