如何自动在域名前增加www前缀?


我们的一个域名,比如example.com,在url框输入 example.com后,直接就可以访问,输入www.example.com,也可以直接访问。

但是看到有些网站,输入example.com后,会自动变为www.example.com。

请问这是如何实现的?

系统 web配置 www前缀 技巧

AngelD奏 10 years, 5 months ago

这个取决于你的web服务器是什么,实际上使用的是url rewrite技术。这里拿apache 和 nginx 做例子。

Apache

  1. 确保 mod_rewrite 是装载的;
  2. 修改 .htaccess 文件

代码:

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

还有一种方式,直接修改你的站点配置文件

## www.example.com
<VirtualHost *:80>
    ServerName www.example.com
    DocumentRoot /www/example.com/htdocs
    # Other directives omitted
</VirtualHost>

## example.com (Redirect)
<VirtualHost *:80>
    ServerName example.com
    Redirect permanent / http://www.example.com/
</VirtualHost>

Nginx

如果你的nginx不支持rewrite,你可以按以下方式修改站点配置文件

server {
    listen       80;
    server_name  example.org;
    return       301 http://www.example.org$request_uri;
}

server {
    listen       80;
    server_name  www.example.org;
    ...
}

如果你的nginx支持rewrite,代码如下:

server {
    server_name  domain.com;
    rewrite ^(.*) http://www.domain.com$1 permanent;
}

server {
    server_name  www.domain.com;
    #The rest of your configuration goes here#
}

从效率上而言,直接return要比rewrite更快一些。

神一般的M酱 answered 10 years, 5 months ago

Your Answer