繁体   English   中英

将不以图片扩展名结尾的子域请求重定向到主域(htaccess)

[英]Redirect subdomain requests that do not end with image extension to main domain (htaccess)

在某个时候,我有一个打算用于CDN的子域: images.example.com 该子域上的请求应类似于http://images.example.com/path/to/some/image.jpg 但是目前,所有内容仍托管在同一服务器上,并且服务器配置为将images.example.com作为example.com别名。

这样,两个请求都将起作用: http://images.example.com/path/to/some/image.jpg : http://images.example.com/path/to/some/image.jpg http://example.com/path/to/some/image.jpg

但是,其他有效请求也会在子域和tld上解析: http://example.com/blog/post/Some-Interesting-Non-Image-Content : http://example.com/blog/post/Some-Interesting-Non-Image-Content http://images.example.com/blog/post/Some-Interesting-Non-Image-Content

假设如果流传输图像,则URL将具有图像扩展名。 我想写一个重写电导率/规则.htaccess将重定向所有请求images.example.com ,不图像扩展名结尾(\\.gif|\\.png|\\.jpeg|\\.jpg)example.com 我也想有相反的规则。 如果带有(\\.gif|\\.png|\\.jpeg|\\.jpg)的请求到达example.com将其重定向到images.example.com

我尝试了几件事,它们似乎失败了(我很难解决.htaccess正则表达式):

RewriteCond %{HTTP_HOST} ^images\.example\.com (.*) (?!\.jpg|\.gif|\.jpg|\.jpeg)$
RewriteRule ^(.*) http://www.example.com/$1 [R=301,L]

RewriteCond %{HTTP_HOST} ^example\.com (.*) (\.jpg|\.gif|\.jpg|\.jpeg)$
RewriteRule ^(.*) http://images.example.com/$1 [R=301,L]

%{HTTP_HOST}变量包含主机名,因为它是在HTTP“主机”请求标头中传输的。 因此,您不能尝试匹配其中的请求URI之类的内容。 您可以在RewriteRule的正则表达式模式中或针对%{REQUEST_URI}变量来执行此操作。 尝试:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^images\.example\.com$ [NC]
RewriteRule !\.(jpe?g|gif|ico|png)$ http://www.example.com%{REQUEST_URI} [R=301,L,NC]

RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$ [NC]
RewriteRule \.(jpe?g|gif|ico|png)$ http://images.example.com%{REQUEST_URI} [R=301,L,NC]

NC标志指示匹配不区分大小写。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM