【问题标题】:Wordpress: How to change link to image source file instead of attachment link?Wordpress:如何更改图像源文件的链接而不是附件链接?
【发布时间】:2013-10-19 12:36:43
【问题描述】:

几年来,我使用了一个名为 PhotoPress 的 Wordpress 插件,它是一个 GUI 来上传和放置图像到 Wordpress 帖子中。该插件于 2007 年停产,因为 Wordpress 自己的媒体库得到了极大的改进。

我现在遇到的问题是,我帖子中价值四五年的图片是使用 PhotoPress 上传的,PhotoPress 以不同于原生 Wordpress 默认的特定方式将图片附加到帖子中。

当我最近切换到一个新主题时,它引起了许多问题。

查看 Google Webmastertools 由于这种情况下的错误链接,我有超过 4000+ 404 错误。 (请参阅下面的网址)

虽然图片会显示在帖子中,但如果您直接点击旧帖子中的任何图片,而不是转到显示图片的页面,则会返回 404 错误。请参阅以下内容:

图片在帖子中正确显示:

http://www.hongkonghustle.com/fashion/3138/thierry-mugler-hong-kong-china-fashion-show-western-market-hk-rick-genest-zombie-boy-rico-nicolas-formichetti-lady-gaga-stylist-joyce-boutique-store-skeleton-tattoo/

但是,单击单个图像会返回 404 错误。

PhotoPress 链接图像的方式如下所示:/?pagename=album&?pp_album=main&pp_cat=default&pp_image=zombie_boy_tattoo_lady_gaga_rick_genest.jpg

同时,图片源实际存放的目录路径在这里:

http://www.hongkonghustle.com/wp-content/photos/zombie_boy_tattoo_lady_gaga_rick_genest.jpg

我不确定,但我认为这是因为图像没有直接链接到源文件 - 而是链接到 POST ATTACHMENT 链接。

我很困惑如何解决这个问题。

图像最初(现在仍然)存储在 wp-content/photos 文件夹中,因此如果您单击直接 URL,它就可以工作。

但是,当我切换到新主题时,图像没有出现在媒体库中。

因此,我将 4000 多张图片批量重新上传到媒体库中,现在它们都没有链接。

我对批量重新附加源图像并消除 404 错误的方法感兴趣。

我将如何做到这一点?

有什么想法吗?非常感谢您的建议!谢谢!

【问题讨论】:

    标签: php image wordpress .htaccess permalinks


    【解决方案1】:

    我最终在 htaccess 中进行了 301 重定向:

    Options +Indexes
    Options +FollowSymLinks
    RewriteEngine on
    RewriteCond  %{QUERY_STRING}  ^pagename=album&\??pp_album=main&pp_cat=default&pp_image=(.*)$
    RewriteRule .* /wp-content/photos/%1? [L,R=301]
    
    RewriteCond %{HTTP_HOST} ^hongkonghustle\.com
    RewriteRule ^(.*)$ http://www.hongkonghustle.com/$1 [R=permanent,L]
    
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_URI} !(.*)/$
    RewriteRule ^(.*)$ http://www.hongkonghustle.com/$1/ [L,R=301]
    
    RewriteEngine On  
    RewriteBase / 
    <Files wp-config.php>
    Deny from all
    </Files>
    
    <Files wp-config.php>
    Deny from all
    </Files>
    Options +Indexes
    IndexOptions -FancyIndexing
    
    
    # BEGIN WordPress
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    </IfModule>
    
    # END WordPress
    

    【讨论】:

      【解决方案2】:

      每当有pp_image 查询字符串时,对新主题index.php 执行301 永久重定向怎么样?

      你可以重定向

      http://www.hongkonghustle.com/?pagename=album&?pp_album=main&pp_cat=default&pp_image=zombie_boy_tattoo_lady_gaga_rick_genest.jpg

      http://www.hongkonghustle.com/wp-content/photos/zombie_boy_tattoo_lady_gaga_rick_genest.jpg

      通过将$_GET['pp_image'] 附加到http://www.hongkonghustle.com/wp-content/photos/ (content_url() ?)

      只需确保在发送输出之前完成重定向,PHP 输出缓冲区就可以派上用场。

      希望对您有所帮助。


      可能有用的链接:

      【讨论】:

      • 谢谢@LongYC 我会试试看能不能让它工作。非常感谢!
      猜你喜欢
      • 1970-01-01
      • 2016-05-15
      • 1970-01-01
      • 2012-10-18
      • 2011-09-29
      • 2020-04-16
      • 2017-06-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多