如何用.htaccess实现无www前缀重定向及域名访问异常处理
.htaccess域名重定向与异常页面修复方案
刚好处理过不少类似的.htaccess配置问题,这就给你一步步讲清楚:
1. 重定向至不带www前缀的域名
要实现把所有带www的访问统一跳转到不带www的域名,你需要用到Apache的mod_rewrite模块(绝大多数主机服务商都默认开启了这个模块)。在网站根目录的.htaccess文件里添加以下规则即可:
# 开启URL重写引擎 RewriteEngine On # 匹配带www的域名,永久重定向到不带www的版本 RewriteCond %{HTTP_HOST} ^www\.icpcc\.example\.org$ [NC] RewriteRule ^(.*)$ http://icpcc.example.org/$1 [L,R=301]
简单解释下规则里的参数:
[NC]:不区分域名的大小写,避免因为用户输入大写字母导致规则失效R=301:表示永久重定向,这对SEO友好,搜索引擎会更新它的索引记录[L]:告诉服务器这是最后一条规则,匹配到后就停止执行后续规则
2. 修复不带www域名显示“come back page”的问题
你现在遇到的情况是www域名能正常访问,但不带www的域名跳转到异常页面,大概率是因为不带www的请求没有被正确指向网站根目录,或者.htaccess里存在错误的规则拦截了这些请求。解决方法很简单,直接通过重定向把所有不带www的请求转到正常的域名上即可,有两种方案可选:
方案一:统一到www域名(保持现有正常访问的域名)
RewriteEngine On # 匹配不带www的域名,重定向到带www的版本 RewriteCond %{HTTP_HOST} ^icpcc\.example\.org$ [NC] RewriteRule ^(.*)$ http://www.icpcc.example.org/$1 [L,R=301]
方案二:统一到不带www域名(和第一个问题的需求一致)
直接使用第一个问题里的规则就行,这样所有访问都会跳转到不带www的域名,自然就不会出现异常页面了。
添加完规则后,记得清空浏览器缓存再测试,避免缓存旧的重定向记录影响结果。
内容的提问来源于stack exchange,提问作者Daksh Lohar
相关产品推荐
相关产品推荐

