这些子域的htaccess重写规则有什么问题

时间:2014-07-10 21:20:04

标签: php apache .htaccess mod-rewrite

我们有两个子域用于并行加载:

image.example.com other.example.com

我们不希望人们能够通过这些域中的任何一个来浏览我们的网站,但我们确实希望使用它们来提供某些内容,例如图像,js文件,CSS等。

Not okay, redirect to www -> http://image.example.com
Not okay, redirect to www -> http://image.example.com/sales.php
Okay, do not redirect     -> http://image.example.com/images/picture.jpg
Okay, do not redirect     -> http://image.example.com/images/picture.png
Okay, do not redirect     -> http://other.example.com/images/picture.gif
Okay, do not redirect     -> http://other.example.com/resources/styles.css

以下是我用来完成此操作的规则,但它们似乎无法正常工作:

RewriteCond %{HTTP_HOST} !^www.example.com$ [NC]
RewriteCond %{HTTP:X-HOST} !^image.example.com$ [NC]
RewriteCond %{HTTP:X-HOST} !^other.example.com$ [NC]
RewriteCond %{REQUEST_URI} !^/robots\.txt
RewriteCond %{REQUEST_URI} !^/forums/(.*)
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^/]*/)*index\.html? [NC]
RewriteRule ^(([^/]*/)*)index\.html?$ http://www.example.com/$1 [R=301,L]

RewriteCond %{HTTP_HOST} ^image\.example\.com$ [OR]
RewriteCond %{HTTP_HOST} ^other\.example\.com$
RewriteCond %{REQUEST_URI} !^/?(js|resources|image)
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]


RewriteCond %{HTTP_HOST} ^image\.example\.com$ [OR]
RewriteCond %{HTTP_HOST} ^other\.example\.com$
RewriteCond %{REQUEST_URI} !\.(jpg|gif|png|css|js)$
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]

这里可能有一些不需要或冗余的规则,我需要帮助找出可能出错的地方。

总之,这是我想要实现的目标:

“如果请求是针对图片或其他子域名,请重定向到www,除非请求是针对jpg,gif,png,css或js文件。此外,如果请求是针对图片或其他子域名,则文件路径包含除js,资源或图像之外的任何内容,请重定向到www“

0 个答案:

没有答案