【问题标题】:Redirect file requests (pdf, doc, etc.) to new location using .htaccess使用 .htaccess 将文件请求(pdf、doc 等)重定向到新位置
【发布时间】:2015-04-21 20:38:16
【问题描述】:

我正在尝试将在一个域上发出的文件请求重定向到子域。请求的文件混合在一起:.doc、.docx、.pdf、.ppt 和 .pptx。

到目前为止,我一直未能成功编写规则来实现这一点:

RewriteCond %{HTTP_HOST} ^domain\.org\.uk$ [OR]
RewriteCond %{HTTP_HOST} ^www\.domain\.org\.uk$
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^dir1\/subdir1\/subdir\/(.+\.(pdf|doc|docx|ppt|pptx)$ "http\:\/\/subdomain\.domain\.org\.uk\/newdir\/$1" [NC,R=302,L]

我在有和没有 HTTP_HOST 条件的情况下都试过了。

请有人指出正确的方向,为什么这不起作用?

谢谢。

编辑

.htaccess 示例

#The first rule
RewriteEngine On
#RewriteCond %{HTTP_HOST} !^www\.
#RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTP_HOST} ^domain\.org\.uk$
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

#The last (working) rule before the rule I'm trying to implement
RewriteCond %{HTTP_HOST} ^domain\.org\.uk$ [OR]
RewriteCond %{HTTP_HOST} ^www\.domain\.org\.uk$
RewriteRule ^apply\/?(.*)$ "http\:\/\/subdomain\.domain\.org\.uk\/$1" [R=301,L]

#The rule I'm trying to get working
RewriteCond %{HTTP_HOST} ^(?:www\.)?domain\.org\.uk$ [NC]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^dir1/subdir1/subdir/(.+\.(pdf|docx?|pptx?))$ http://subdomain.domain.org.uk/newdir/$1 [R=302,NC,L]

【问题讨论】:

  • 提供商已告知我“.pdf 或 .doc 等静态文件将绕过 Apache,因为它们不是由 nginX 提供的。完成这项工作的唯一方法是启用直接推送域”。

标签: apache .htaccess mod-rewrite redirect


【解决方案1】:

您有一些语法错误。

现在应该可以正常工作了

RewriteCond %{HTTP_HOST} ^(?:www\.)?domain\.org\.uk$ [NC]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^dir1/subdir1/subdir/(.+\.(pdf|docx?|pptx?))$ http://subdomain.domain.org.uk/newdir/$1 [R=302,NC,L]

【讨论】:

  • 不幸的是,这也不起作用:文件继续从其原始目录加载。我也尝试在每个字符(例如“http\:\/\/subdomain\.”)之前使用和不使用反斜杠(我拥有的所有其他规则都包括它们并且工作正常)。感谢您指出缺少的右括号。我也注意到您已将文件扩展名从例如 doc|docx 更改为 docx?请您解释一下吗?非常感谢。
  • 您的 htaccess 中还有其他规则吗?如果是这样,您可以用整个代码更新您的问题吗?关于我的代码,您不需要我使用的其他反斜杠。对于docx?,这意味着docdocxpptx 相同)。你的很好,这只是一种更优雅、更短的方法
  • 我已编辑问题以包含 htaccess 文件的示例 - 第一条规则和相关规则之前的最后一条规则。干杯。
  • 我也尝试实现从域目录到子域目录的通配符重定向。
  • 您要访问的 URL 是什么?您的 pdf、doc 等文件是真实的物理文件吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-07-29
  • 2017-06-19
  • 2012-10-03
  • 1970-01-01
  • 2023-04-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多