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