因为最近弄一个站的优化方案,用到一些301的技巧,特作此笔记记录:
首先是php环境下的常规重定向的方法:
首先在网站根目录建立文件 .htaccess
在文件中输入以下内容:
#启用 rewrite module
RewriteCond %{HTTP_HOST} www.bardseo.com
#设定条件,%{HTTP_HOST}-浏览器地址栏中输入的 url 的域名部分
#www.bardseo.com-需要重定向的域名
RewriteRule ^/?$ /%{HTTP_HOST}
RewriteRule www.bardseo.com ./joe/index.php [L]
#针对上面 RewriteCond 设定 重定向规则
#www.bardseo.com-需要重定向的域名
#./joe/index.php-重定向的页面
#[L]-执行这个规则后不再向下执行
下面是一些详细的注释,并掺杂一些高级一点的应用技巧。
rewrite重定向的注释给你看看,你就知道了很简单.
1. 对Apache的设置
首先使用命令"httpd -l"检查mod_rewrite模块是否已经编译到Apache中,如果没有,重新编译Apache。
然后在Apache的配置文件httpd.conf中增加如下语句(其中以"#"开头的为注释):
#禁止使用机器的正式名
UseCanonicalName off
#使能重写功能
RewriteEngine on
RewriteMap lowercase int:tolower
# 为安全考虑,对CGI程序不进行重写
RewriteCond %{REQUEST_URI} !^/cgi-bin/
# 对www.bardseo.com不重写,其他的重写
RewriteCond ${lowercase:%{HTTP_HOST}} !^www.bardseo.com(.*)$
RewriteCond ${lowercase:%{HTTP_HOST}} ^[a-z0-9-]+.bardseo.com(.*)$
# 首先把机器名改为小写,添加到请求的文件路径前,并继续处理
RewriteRule ^(.+) ${lowercase:%{HTTP_HOST}}$1 [C]
# 重写请求
RewriteRule ^([a-z0-9])([a-z0-9])([a-z0-9]).bardseo.com([.]*)/(.*) /member/$1$2/$2$3/$1$2$3/$5
RewriteRule ^([a-z0-9])([a-z0-9])([a-z0-9]*)([a-z0-9])([a-z0-9]).bardseo.com([.]*)/(.*) /member/$1$2/$4$5/$1$2$3$4$5/$7
优点:只要一个IP地址就可以提供大量的虚拟主机服务,维护方便。
缺点:安全性低。上例为了增强安全性,禁止运行用户自己的CGI程序。
2. Apache WWW服务器下的重定向虚拟主机设置
重定向虚拟主机是指仅仅提供重定向功能,而不实际存放用户主页数据的虚拟主机。比如,某站点有多个镜像服务器,假设为www1.bardseo.com、www2.bardseo.com,…wwwn.bardseo.com。这些服务器放在不同的网络上,分布于各地的客户访问这些服务器的速度也互不相同。而站点 www.bardseo.com通过虚拟域名user.bardseo.com为这些镜像的服务器提供虚拟主机服务。当客户访问http://user.bardseoe.com时, www.bardseo.com根据用户的IP地址、收集到的网络拓扑结构信息,把客户重定向到对该客户来说访问速度最快的站点。
重定向虚拟主机服务也可以通过使用URL重写功能来完成。这里仅给出简单的重写规则:
RewriteRule ^([a-z0-9]+).bardseo.com([.]*)/(.*) /www/cgi-bin/nph-redirect.cgi/$1/$3 [T=application/x-httpd-cgi,L]
其中,nph-redirect.cgi为一个CGI程序,为了实现自动重定向,它需要产生完整的HTTP 应答头信息。该程序通过环境变量PATH_INFO得到用户请求的URL,通过环境变量REMOTE_ADDR得到用户的IP地址,并根据网络拓扑情况生成重定向信息,返回给客户。
从网上左抄右抄,发现仍然解决不了自己需要面对的问题,似乎只有安下心来研究一下mod_Rewrite以及Redirect这些小东东的高级应用了。作以下设想:
要采用的主域名为www.bardseo.com,而此时ww.bardseo.com等其他一些泛解析的二级域名共同绑定在主机的ip地址,通过上面的语句辨认,能否将除www.bardseo.com和一些特定的二级域名除外,其他的采取301重定向呢?也就是说使用mod_Rewrite配置重定向的规则可以么?SEO博客一直对正则表达式没有什么概念,求高手解疑。