CDN URL到根文件夹/防止重复内容?

时间:2015-03-22 21:13:34

标签: php apache .htaccess mod-rewrite redirect

对于图片库,我必须安装CDN域。

默认域名:

http://www.example.com
Apache folder: /html/mywebsite

CDN域名:

http://cdn.example.com
Apache folder: /html/mywebsite

CDN域需要相同的Apache文件夹,以便重写URL等原因。

问题:

http://cdn.example.com
and
http://www.example.com

打开同一个网站,这很糟糕。我不能从cdn重写(301)到www,因为我必须提供来自CDN的图像。我也不能使用403:

RewriteCond %{HTTP_HOST} ^cdn\.example\.com$ [NC]
RewriteRule .* / [F]

因为来自cdn的图片网址

http://cdn.example.com/images/test.jpg

得到一个403.是否可以只为根文件夹创建403而不是子文件夹,或者你有更好的想法吗?

顺便说一句。 robots.txt也很糟糕,因为cdn中的图像应该被编入索引。一个htaccess解决方案会很棒。

2 个答案:

答案 0 :(得分:0)

如果您只希望cdn.example.com的根(以及根目录中的任何文档)转到www.example.com并且每个域使用单独的VirtualHost,您可以使用简单的内容

RedirectMatch permanent ^/?(.+\.php)$ http://www.example.com/$1

cdn.example.com的VirtualHost容器中。显然,您可以调整正则表达式以匹配您网站的文件。

请参阅Apache docs,了解为什么这比使用mod_rewrite更可取。它更简单,更易于维护,并且在许多情况下可以带来更好的性能。

答案 1 :(得分:0)

首先,谢谢你的软心和dartnow

@dartnow:

您的解决方案正在解决我的问题。谢谢你的时间。

有一个更好的解决方案:

RewriteCond %{HTTP_HOST} ^static.example.com$
RewriteCond %{REQUEST_URI} !\.(?i:php|jpe?g|ico|js|txt|css|pdf|zip|gz|gif|png)$
RewriteRule .* http://example.com%{REQUEST_URI} [L,R=301]

i:cond中的php是来自php文档的图像。     http://metasun.com/b/prevent-cdn-caching-webpages-avoid-duplicate-content