[英]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.