【问题标题】:Change permalinks - htaccess code needed更改永久链接 - 需要 htaccess 代码
【发布时间】:2012-03-10 04:10:46
【问题描述】:

我有一个博客(wordpress 版本 3.01),它具有以下格式的基于自定义的永久链接:/%category%/%postname%/。例如,blog.com/category/post-name/

我需要将永久链接更改为“日期和名称”/%year%/%monthnum%/%day%/%postname%/(我的主题需要它才能正常工作)。

我需要在我的 .htaccess 文件中写什么以使旧的永久链接 301 重定向到新的永久链接?

我的网站已有 9 个月的历史,大约有 500 篇文章。


例子

/%category%/%postname%/到/%postname%/

重定向匹配 301 ^/([^/]+)/([^/]+)/$ http://www.mydomain.com/$2

我的情况是得到这个

/%category%/%postname%/ to /%year%/%monthnum%/%day%/%postname%/

重定向匹配 301 ?????????????

【问题讨论】:

    标签: php .htaccess blogs permalinks


    【解决方案1】:

    您不能对.htaccess 文件执行此操作,因为可以执行此操作的重写功能(RewriteMap)在.htaccess 上下文中不起作用。但是,由于您有一个封闭的列表,因此也有一个固定的类别列表,因此很容易将它们映射到一个通用的重定向器脚本:

    RewriteEngine On
    RewriteBase   /
    
    RewriteRule ^(cat1|cat2|cat3|cat4)/.*?/$ redirector.php?cat=$1&post=$2 [L,QSA]
    

    (将猫列表扩展为完整的类别列表)。那么redirector.php 是一个标准的重定向模式。您只需查询您的 Wordpress D/B 以确定发布帖子的 YMD

    $server  = $_SERVER['HTTP_HOST'];
    header( "Location: HTTP://$server/$year/$month/$day/$postName/", true, 302 );
    

    在退出之前。

    【讨论】:

    • 嗨,特里,如果我理解正确的话,1) 我将 RewriteEngine On RewriteBase / 放在我的 .htaccess 文件中。 2)创建一个文件redirector.php,我粘贴$server = $_SERVER['HTTP_HOST']; header("位置:HTTP://$server/$year/$month/$day/$postName/", true, 302);对不起,我不太擅长这个,
    • 是的,重写行进入您的 htaccess 文件。你现在遇到的问题是,如果有人输入“http://yourdomain/wranting/Why-do-I-hate-myself/”,比如说这篇文章发表于 2012 年 1 月 2 日,那么你需要直接输入“http://yourdomain/2012/01/02/Why-do-I-hate-myself/”。您在哪里查找每篇文章的 YMD 详细信息?您要么使用 Wordpress D/B,要么将一系列文章发布日期硬连接到脚本中。我会更新它来告诉你如何做后者:-)
    • 好的,谢谢:-) 期待
    • 我刚刚想到了这个。我开始草拟一个解决方案,但您需要能够编写最少的 php 脚本才能理解这一点。如果你没有这个,那么正确的答案是“对不起,但你不能在没有脚本的情况下做到这一点。但是,我已经重新标记了帖子以添加 PHP,也许其他人可以提供标准的解决方法。
    • 谢谢 TerryE,是的,事实上我的 PHP 技能很低,了解一些基础知识。期待
    猜你喜欢
    • 1970-01-01
    • 2023-03-14
    • 2015-05-04
    • 2020-03-16
    • 1970-01-01
    • 2015-09-09
    • 2011-07-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多