媒体/附件URL不会使用虚假URL结构进行重定向

时间:2014-03-31 作者:Bjorn

我对媒体/附件文件有问题,我不太确定WordPress是如何返回URL的。我注意到,我可以在媒体slug和WordPress返回200头并以某种方式指向正确的媒体之前添加任何子目录结构。例如:

http://mysite.dev/asdfasdfadsfasdf/media-slug
正确的URL应为:

http://mysite.dev/media-slug
错误的URL返回200 HTTP头,即使文件正确,附件模板也能正常加载。我以为这是因为《圣经》中的某些东西。php文件,但在经过相当多的测试,甚至删除了该文件中的所有内容(在测试环境中),WordPress仍在这样做。如果我对常规帖子执行此操作,WordPress将返回301并重定向到实际的帖子URL,这是我所期望的。有人知道媒体有什么不同吗?这发生在一个正在进行大量工作的站点上,但我也在测试环境中的super basic WP安装上进行了尝试。Permalink结构设置为:

/%postname%/
这是问题的一部分吗?

1 个回复
SO网友:Bjorn

米洛让我走上了正确的轨道。如果其他人碰巧有此问题,我使用的代码是:

/**
* Redirect broken attachment links to 404
*/

function ww_404_broken_links(){
  global $wp_query;

  if(is_attachment()){
    $attachment_path = get_attached_file( get_the_ID() );

    //If the file doesn\'t exist on the server show 404
    if(!file_exists($attachment_path)){
        $wp_query->set_404();
        status_header( 404 );
        get_template_part( 404 );
        exit();
    }
  }
}

add_action(\'template_redirect\', \'ww_404_broken_links\');
我还在old files目录中添加了一个htaccess文件,其中只包含:

RewriteEngine off
因此,如果文件丢失,那么附件帖子和文件404的直接链接都会丢失。

结束

相关推荐

page is not redirecting

如果只能找到一篇帖子,我想重定向到我的主页。我尝试了下面的代码,但它不起作用,我也尝试了标题(“位置:url”),但它也不起作用。 <?php $args = array( \'post_type\' => \'post\', \'posts_per_page\'=> 10, \'post_status\' => \'publish\', ); $my_qu