重定向除图像外的所有内容

时间:2013-08-20 08:56:14

标签: regex apache .htaccess mod-rewrite

我不明白为什么但是:

RewriteCond %{HTTP_HOST} market\.mysite\.com$ [NC]
RewriteCond %{HTTP_HOST} !^market\.mysite\.com$ [NC]
RewriteCond %{REQUEST_URI} \.(png|jpe?g|bmp|gif|swf|css|js)$ [NC]
RewriteRule ^(.*) http://market.mysite.com/$1 [L,R]

RewriteCond %{REQUEST_URI} !^/index\.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [L]

按预期工作。将图像重定向到其他域。但是这一个:

RewriteCond %{HTTP_HOST} market\.mysite\.com$ [NC]
RewriteCond %{HTTP_HOST} !^market\.mysite\.com$ [NC]
RewriteCond %{REQUEST_URI} !\.(png|jpe?g|bmp|gif|swf|css|js)$ [NC]
RewriteRule ^(.*) http://market.mysite.com/$1 [L,R]

RewriteCond %{REQUEST_URI} !^/index\.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [L]

无论如何都会重定向所有内容。我想看到的是重定向所有除了图像。 我在上面的规则中尝试做的是将market.mysite.com的所有子域重定向到market.mysite.com,如果它不是market.mysite.com,如果它不是图像。换句话说:

cdn.market.mysite.com -> market.mysite.com

cdn.market.mysite.com/blahblah.html -> market.mysite.com/blahblah.html

cdn.market.mysite.com/blahblah.png -> NO REDIRECT

market.mysite.com -> NO REDIRECT

我使用通配符子域,因此我的所有市场子子域都将使用相同的目录。然后通过一个php文件响应所有请求。的index.php

谢谢,

1 个答案:

答案 0 :(得分:4)

用以下内容替换现有代码:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On

RewriteCond %{HTTP_HOST} ^[^.]+\.market\.mysite\.com$ [NC]
RewriteCond %{THE_REQUEST} !^[A-Z]{3,}\s/+.+?\.(png|jpe?g|bmp|gif|swf|css|js)[\s?] [NC]
RewriteRule ^ http://market.mysite.com%{REQUEST_URI} [L,R]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [L]

在其他浏览器中测试或清除现有的浏览器缓存。