php - 关于.htaccess文件要怎么写301重定向到对应的页面

查看:92
本文介绍了php - 关于.htaccess文件要怎么写301重定向到对应的页面的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

这个是网站更好新域名,之前的是http://www.baidu.com
后面改成https://www.segmentfault.com
然后写301跳转的时候为什么会失败?
我的.htaccess文件代码如下

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . / [L]
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.segmentfault.com/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^baidu.com [NC]
RewriteRule ^(.*)$ https://www.segmentfault.com/$1 [L,R=301]
</IfModule>

这个规则之前用baidu.com/category/p123.html
跳转到www.baidu.com/category/p123.html
是没有问题的

这是服务器conf对应的编写规则
新域名

<VirtualHost *:443>
    ServerAdmin baidu@qq.com 
    DocumentRoot "/data/wwwroot/default/"
    ServerName www.segmentfault.com
    ErrorLog "/data/wwwlogs/www.segmentfault.com_error_apache.log"
    CustomLog "|/usr/local/cronolog/sbin/cronolog /data/wwwlogs/segmentfault/pc/%Y%m%d_www.segmentfault.com_access.log" common
<Directory "/data/wwwroot/default">
    SetOutputFilter DEFLATE
    Options FollowSymLinks ExecCGI
    Require all granted
    AllowOverride All
    Order allow,deny
    Allow from all
    DirectoryIndex index.html index.php
</Directory>
</VirtualHost>

老域名的conf规则

<VirtualHost *:80>
    ServerAdmin baidu@qq.com
    DocumentRoot "/data/wwwroot/default"
    ServerName www.baidu.com
    ErrorLog "/data/wwwlogs/www.baidu.com_error_apache.log"
    CustomLog "|/usr/local/cronolog/sbin/cronolog /data/wwwlogs/baidu/pc/%Y%m%d_www.baidu.com_access.log" common
<Directory "/data/wwwroot/default">
    SetOutputFilter DEFLATE
    Options FollowSymLinks ExecCGI
    Require all granted
    AllowOverride All
    Order allow,deny
    Allow from all
    DirectoryIndex index.html index.php forum.php
</Directory>
</VirtualHost>

这些都是设置好之后,我访问老域名http://www.baidu.com/category/p1056.html
为什么始终跳转到https://www.segmentfault.com/
不管访问什么页面都是跳转到https://www.segmentfault.com/
怎么样才可以让他跳转到对应的页面也就是访问http://www.baidu.com/category/p1056.html
能够跳转到https://www.segmentfault.com/category/p1056.html
哪里设置不对了,。求解

解决方案

RewriteRule . / [L]这句话, 注意参数 L表示last, 立即停止重写操作,并不再应用其他重写规则。

所有后面的规则都会失效.

重定向 RewriteRule ^(.*)$ https://www.segmentfault.com/$1 [R=301,L]这句是正确的。

这篇关于php - 关于.htaccess文件要怎么写301重定向到对应的页面的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆