【问题标题】:How to 301 redirect with same url structures?如何使用相同的 url 结构进行 301 重定向?
【发布时间】:2013-08-19 10:40:55
【问题描述】:

我正在尝试使用相同的 url 结构将站点 a 重定向到站点 b。我的 htaccess 是

Redirect 301 / http://www.siteb.com/

RewriteRule ^(.*)/(.*)/(.*)$ index.php?video=$1&id=$2&words=$3

RewriteRule ^videos/(.*)$ index.php?videos=$1

但是,在重定向的站点上,它添加了其他变量。例如;

siteA.com/y/T5INF08ZEdA/Miranda-Kerr-In-Hot-Water-with-Orlando-Bloom

siteB.com/y/T5INF08ZEdA/Miranda-Kerr-In-Hot-Water-with-Orlando-Bloom?video=y&id=T5INF08ZEdA&words=Miranda-Kerr-In-Hot-Water-with-Orlando-Bloom

使用相同的 url 结构进行 301 重定向的正确方法是什么?

【问题讨论】:

    标签: .htaccess redirect


    【解决方案1】:

    这是因为您的代码中存在两个主要问题:

    1. 混合使用 mod_alias 和 mod_rewrite 规则。
    2. 未在 mod_rewrite 规则中使用 L 标志,这会导致在同一 URL 上触发多个规则。

    我建议你只坚持使用 mod_rewrite 并保持你的 .htaccess 像这样:

    Options +FollowSymLinks -MultiViews
    # Turn mod_rewrite on
    RewriteEngine On
    RewriteBase /
    
    RewriteCond %{HTTP_HOST} ^(www\.)sitea\.com$ [NC]
    RewriteRule ^ http://www.siteb.com%{REQUEST_URI} [L,R=301]
    
    RewriteRule ^videos/(.*)$ index.php?videos=$1 [L,QSA,NC]
    
    RewriteRule ^([^/]+)/([^/]+)/(.*?)/?$ index.php?video=$1&id=$2&words=$3 [L,QSA]
    

    【讨论】:

    • 它在第三次重写规则页面时不会重定向到siteb。
    • 你总是想从sitea重定向到siteb吗?
    猜你喜欢
    • 1970-01-01
    • 2015-05-07
    • 1970-01-01
    • 2020-02-14
    • 1970-01-01
    • 1970-01-01
    • 2013-01-07
    • 2012-03-23
    • 1970-01-01
    相关资源
    最近更新 更多