Answers
这个取决于你的web服务器是什么,实际上使用的是url rewrite技术。这里拿apache 和 nginx 做例子。
Apache
- 确保 mod_rewrite 是装载的;
- 修改 .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, 6 months ago