我的项目是PHP项目,使用的是apache服务器,现在www域名指向这台服务器。
现在实现的效果为在浏览器中输入顶级域名,然后自动跳转到www子域名中,下面是具体的解决方法。
使用apache的rewrite功能
配置步骤:
第一步:找到apache的配置文件httpd.conf(文件在conf目录下)
第二步:你首先必须得让服务器支持mod_rewrite,如果你使用的是虚拟主机,请事先询问你的主机提供商。
打开httpd.conf,找到
#LoadModulerewrite_module modules/mod_rewrite.so
把#去掉
找到AllowOverrideNone 改成 AllowOverrideAll,
注:AllowOverride的参数设置为ALL,表示整台服务器上都支持URL规则重写。Apache 服务器要读每个网站下目录下的 .htaccess 文件。如果没有这个文件,或者这个文档没有定义任何关于URL重写的规则就不会有任何效果。
对于不同的网址,需要在APACHE中增加如下内容
<Directory“E:/Apache Group/Apache2/htdocs/leapsoul”>
/*引号里代表你的web存放目录*/
/*如果是Linux,只要你定位到你网站目录即可*/
Options FollowSymLinks
AllowOverride None
</Directory>
第三步:重启apache服务器,先按stop再start。
第四步:在你需要URL重写的网站目录下放一个.htaccess文件,文件名是.htaccess,Windiws下不能直接建立,你可以用记事本另存为。
注:我测试的时候在每个需要伪静态的目录下都存放了对应的.htaccess文件,同时在httpd.conf文件中像第二步那样对相关的目录添加了相应的<Directory>..</Directory>代码。
第五步:在.htaccess中通过正则表达式实现功能,参考代码如下所示:
# url canonicalization
RewriteCond%{http_host} ^0531fk.cn [NC]
RewriteRule^(.*)$ http://www.0531fk.cn/$1 [L,R=301]