使用.htaccess将文件请求(pdf,doc等)重定向到新位置

时间:2015-04-21 11:20:02

标签: apache .htaccess mod-rewrite redirect

我正在尝试将在一个域上发出的文件请求重定向到子域。请求的文件混合在一起:.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]

1 个答案:

答案 0 :(得分:0)

您有一些语法错误。

这应该按预期工作

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]