虽然有的人喜欢用不带www的域名作为主域名,但是个人习惯还是喜欢使用带www的域名,所以虽然寻小山这个网站不带www和带www的域名都有做解析但是做了301跳转把带www的作为主域名。不过因为后面子目录下新建了一个网站,跳转功能就出现了问题,我发现这种只能实现首页跳转,子目录不能实现www和不带www的301跳转,如何实现整站从带www上跳转到带www上呢?
刚开始在根目录的.htaccess文件中设置统一的php301跳转代码,但是我发现首页可以正常跳转,但是子目录虽然可以实现跳转,但是如果子目录和首页不是同一个程序还是会跳转成和首页一样的链接结构,就会出现404页面,当然假如两个网站是使用同一个程序(比如两个网站都是WordPress),这个方法就是有效的。
但是事实上,大部分两个网站都会是不同程序,比如一个是WordPress,另一个是Dedecms,那就要通过单个目录分别设置不同的.htaccess规则。为了防止伪静态规则冲突,就需要通过如下方法来解决:
第一步:根目录.htaccess规则设置
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
第二步:单个目录强制重定向到www
RewriteEngine on
RewriteCond %{HTTP_HOST} ^example.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/ABC/$1 [R=301,L]
RewriteBase /ABC/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ index.php?$0
注意:将静态页面301跳转代码中的示例example域名及示例文件夹ABC换成你自己对应的域名及文件夹名称。
0条评论