【问题标题】:Redirect an external request of pdf to a page where the pdf is embedded将 pdf 的外部请求重定向到嵌入 pdf 的页面
【发布时间】:2017-08-18 13:50:30
【问题描述】:

在使用 Joomla! 构建的网站中,我会将外部 pdf 请求重定向到使用 iframe 或对象元素嵌入 pdf 的页面。

我尝试通过 htaccess 进行操作,但它不起作用。似乎 HTTP_REFERER 不能正常工作。看来嵌入式pdf的请求被视为外部请求。

当我请求 mywebsite.com/pdf/filename.pdf 时,我会被重定向到 mywebsite.com/filename,但嵌入的 pdf 本身也会无限循环地重定向到 mywebsite.com/filename!

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^mywebsite\.com [NC]
RewriteRule ^pdf/\filename\.pdf$ http://website.com/filename [R=300,L]

这是嵌入pdf的html代码:

<object data="/pdf/filename.pdf" type="application/pdf">
    <p>This browser does not support PDFs.</p>
</object>

有没有人可以帮助我了解问题所在?

如何将外部 pdf 请求重定向到嵌入 pdf 的页面?

谢谢!

【问题讨论】:

  • 你为什么使用 300(多选)状态而不是 301(永久重定向)
  • 谢谢,不幸的是 R=301 不足以解决问题。我使用 R=300 而不是 R=301 因为这个重定向并不是真正的永久重定向。请参阅下面的讨论。再次感谢您。

标签: .htaccess pdf redirect mod-rewrite http-referer


【解决方案1】:

因为HTTP_REFERER包含协议(http://),所以不能使用^。或者需要添加。

尝试:

RewriteEngine On
RewriteCond %{HTTP_REFERER} !mywebsite\.com [NC]
RewriteRule ^pdf/filename\.pdf$ http://website.com/filename [NC,R=302,L]

或者:

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://mywebsite\.com [NC]
RewriteRule ^pdf/filename\.pdf$ http://website.com/filename [NC,R=302,L]

【讨论】:

  • 非常感谢。我解决了这个问题。但是,我对 R=302 的使用有点疑惑。根据w3.org,R=302 表示“请求的资源暂时驻留在不同的 URI 下”。此重定向并不是真正的临时重定向。 R=303 不是更有效吗?
  • 不客气,很高兴它成功了。你有选择,选择肯定更多地与 SEO 相关,而不是另一个问题。这完全取决于您是要索引当前网站还是重定向页面。对于永久重定向,我将使用 301
  • 你是对的,这是一个 SEO 问题。但是,您会使用哪个代码?我的网站就像一个带有 PDF 的学术期刊(但我认为将 PDF 的直接请求重定向到包含嵌入的 PDF 的页面在许多情况下始终是最佳实践)。
  • 301 不起作用,因为它是永久的,所以它被缓存了。使用 301,当我直接需要 pdf 时,我重定向到嵌入它的 html 页面,但这里没有显示 pdf(因为嵌入的元素再次被重定向)。
  • 你是对的。在这种情况下,肯定有必要保持在 302 或 303。但是,我不知道 Google 更欣赏其中一个...
猜你喜欢
  • 2011-01-21
  • 2011-01-20
  • 1970-01-01
  • 1970-01-01
  • 2014-03-31
  • 2014-11-26
  • 2021-09-09
  • 1970-01-01
  • 2020-09-24
相关资源
最近更新 更多