【问题标题】:How do I redirect custom url using htaccess?如何使用 htaccess 重定向自定义 url?
【发布时间】:2013-01-07 04:07:40
【问题描述】:

我正在从 Wordpress 迁移到自定义编码内容管理系统,需要帮助使用 htaccess 转换旧 URL。

我有超过 2000 多篇具有以下 URL 结构的旧文章:

www.site.com/ID/post-title/

我需要将每个帖子重定向到使用帖子 ID 的自定义脚本:

www.site.com/post.php?id=ID

非常感谢任何帮助。

【问题讨论】:

    标签: regex apache .htaccess


    【解决方案1】:

    你可以试试这个:

    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} ^/([^/]+)/?    [NC]
    RewriteRule .* post.php?id=%1  [L,QSA]
    

    它会默默映射:

    http://www.site.com/ID/post-title/

    到这里:

    http://www.site.com/post.php?id=ID

    其中ID 不是固定字符串,而是作为id 值传递给脚本的变量。

    【讨论】:

    • +1 但请注意,如果确实需要重定向,则应在规则中包含 R=301
    • 是的,但想法是让传入的 URL 显示在浏览器的地址栏中,重定向 R flag 将修改它。它必须被静默映射。
    • 我尝试了上面的代码,但收到了 404 错误。如何实现 r 标志?
    • 像这样:[R=301,L,QSA],但是为什么会出现 404 错误是重要的问题。请在浏览器地址栏中的评论中复制粘贴测试过的 URL。 ¿ 脚本 post.php 是否存在,如果存在,它位于何处?
    • 天哪,我忘了 post.php 只是理论上的,实际的文件名是别的东西。一切正常,非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-16
    • 1970-01-01
    • 2012-03-12
    • 1970-01-01
    • 2014-09-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多