【问题标题】:.htaccess 301 redirect with variables.htaccess 301 使用变量重定向
【发布时间】:2012-09-26 10:40:43
【问题描述】:

我正在升级一个将使用新链接的网站。可以从旧 URL 中找出新 URL,因此我想在 .htaccess 中创建一些 301 条目以转发旧链接。

我知道这是可能的

Redirect 301 /orginalURL.html http://website.com/newURL.php

但是我需要使用旧网址的一部分来构建新网址。这可能吗? 旧网址示例

/index.php?page=/shop/bcat&c=47

那应该是

/se/category/47

在这种情况下,47 是我需要从旧 URL 获取到新 URL 的密钥。此外,我不能期望 /index.php 存在于所有旧链接中,因此它们可能看起来像 /?page=/shop/bcat&c=47 也是。

任何可以在这里帮助我的人,我也许可以自己弄清楚其余的重定向:)

【问题讨论】:

    标签: .htaccess redirect http-status-code-301


    【解决方案1】:

    您需要使用 mod_rewrite 来匹配查询字符串。在文档根目录的 htaccess 文件中尝试这样的操作:

    RewriteEngine On
    RewriteCond %{QUERY_STRING} page=/shop/bcat&c=([0-9]+)
    RewriteRule ^/?(index.php)?$ http://website.com/se/category/%1? [L,R=301]
    

    【讨论】:

    • 它几乎可以按我的意愿工作。唯一的问题是查询字符串附加到我重定向到的链接,导致 RewriteCond 再次匹配,使我陷入循环。我尝试添加 QSD 标志,但收到此错误:“RewriteCond: bad flag delimiters”
    • @Anders 抱歉,URL 末尾必须有一个?:http://website.com/se/category/%1?。我已经编辑了答案。
    猜你喜欢
    • 2019-02-23
    • 1970-01-01
    • 2013-09-19
    • 1970-01-01
    • 1970-01-01
    • 2021-01-06
    • 1970-01-01
    • 1970-01-01
    • 2012-12-08
    相关资源
    最近更新 更多