V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
imrei
V2EX  ›  问与答

怎么做到访问旧伪静态地址自动跳转到新伪静态地址呢?

  •  
  •   imrei · 2014-06-16 13:45:53 +08:00 · 5726 次点击
    这是一个创建于 3799 天前的主题,其中的信息可能已经有所发展或是发生改变。
    今天修改了dzx的伪静态链接,但杯具的想起旧地址流量众多。。。改完后严重影响SEO了,请问大家有没有什么办法设置伪静态规则自动识别旧规则跳转至新规则呢。。。
    7 条回复    2014-06-16 20:18:19 +08:00
    Mac
        1
    Mac  
       2014-06-16 14:01:46 +08:00
    jasontse
        2
    jasontse  
       2014-06-16 14:07:34 +08:00 via iPad
    信息量少的可怜。旧地址是什么,新地址又是什么。
    imrei
        3
    imrei  
    OP
       2014-06-16 14:58:46 +08:00
    @Mac 谢谢。。。不过按照他得方案,放进去无效。。。


    @jasontse 老地址: http://www.imsyou.com/thread-658-1-1.html 新地址: http://www.imsyou.com/archives/658-1.html 请问改怎么设置跳转呢?
    Livid
        4
    Livid  
    MOD
       2014-06-16 15:00:34 +08:00
    @imrei 用 web server 的 rewrite 为旧地址加 301 跳转。
    imrei
        5
    imrei  
    OP
       2014-06-16 15:13:45 +08:00
    @Livid T_T 就是写不来。。。我在.htaccess最下面添加过以下两种方案,都失败了
    方案一:
    RewriteRule ^forum-(\w+)-([0-9]+)\.html$ category/(\w+)-([0-9]+)\.html [R=301,L]
    RewriteRule ^thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ archives/([0-9]+)-([0-9]+)\.html [R=301,L]

    方案二:
    RedirectMatch 301 ^forum-(\w+)-([0-9]+)\.html$ category/(\w+)-([0-9]+)\.html
    RedirectMatch 301 ^thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ archives/([0-9]+)-([0-9]+)\.html

    现有规则:
    # 将 RewriteEngine 模式打开
    RewriteEngine On

    # 修改以下语句中的 /discuz 为您的论坛目录地址,如果程序放在根目录中,请将 /discuz 修改为 /
    RewriteBase /

    # Rewrite 系统规则请勿修改
    RewriteCond %{QUERY_STRING} ^(.*)$
    RewriteRule ^topic-(.+)\.html$ portal.php?mod=topic&topic=$1&%1
    RewriteCond %{QUERY_STRING} ^(.*)$
    RewriteRule ^article-([0-9]+)-([0-9]+)\.html$ portal.php?mod=view&aid=$1&page=$2&%1
    RewriteCond %{QUERY_STRING} ^(.*)$
    RewriteRule ^forum-(\w+)-([0-9]+)\.html$ forum.php?mod=forumdisplay&fid=$1&page=$2&%1
    RewriteRule ^category/(\w+)-([0-9]+)\.html$ forum.php?mod=forumdisplay&fid=$1&page=$2&%1
    RewriteCond %{QUERY_STRING} ^(.*)$
    RewriteRule ^index.html$ forum.php?mod=forumdisplay&fid=66
    RewriteCond %{QUERY_STRING} ^(.*)$
    RewriteRule ^thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ forum.php?mod=viewthread&tid=$1&extra=page\%3D$3&page=$2&%1
    RewriteRule ^archives/([0-9]+)-([0-9]+)\.html$ forum.php?mod=viewthread&tid=$1&extra=page\%3D{prevpage}&page=$2&%1
    RewriteCond %{QUERY_STRING} ^(.*)$
    RewriteRule ^group-([0-9]+)-([0-9]+)\.html$ forum.php?mod=group&fid=$1&page=$2&%1
    RewriteCond %{QUERY_STRING} ^(.*)$
    RewriteRule ^space-(username|uid)-(.+)\.html$ home.php?mod=space&$1=$2&%1
    RewriteCond %{QUERY_STRING} ^(.*)$
    RewriteRule ^blog-([0-9]+)-([0-9]+)\.html$ home.php?mod=space&uid=$1&do=blog&id=$2&%1
    RewriteCond %{QUERY_STRING} ^(.*)$
    RewriteRule ^archiver/(fid|tid)-([0-9]+)\.html$ archiver/index.php?action=$1&value=$2&%1
    RewriteCond %{QUERY_STRING} ^(.*)$
    RewriteRule ^([a-z]+[a-z0-9_]*)-([a-z0-9_\-]+)\.html$ plugin.php?id=$1:$2&%1
    ejin
        6
    ejin  
       2014-06-16 20:10:45 +08:00
    我猜是这样的

    RewriteRule ^forum-(\w+)-([0-9]+)\.html$ category/$1-$2.html [R=301,L]
    RewriteRule ^thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ archives/$1-$2.html [R=301,L]
    imrei
        7
    imrei  
    OP
       2014-06-16 20:18:19 +08:00
    谢谢楼上几位,某个人的高人指点解决啦~解决方案:
    http://www.mgrei.com/archives/304.html
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1142 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 23:36 · PVG 07:36 · LAX 15:36 · JFK 18:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.