mod重写子域到文件夹中断到css和图像的路径

时间:2012-12-09 18:24:53

标签: css apache .htaccess mod-rewrite subdomain

我正在尝试使用mod重写将子域重定向到文件夹中带参数的文件。

该网站位于根目录中的/ new文件夹中。

我的.htaccess现在是(放在根目录中)

RewriteEngine on
RewriteCond %{HTTP_HOST}   ^[www\.]*new.mydomain.com [NC]
RewriteCond %{REQUEST_URI} !^/new/.*
RewriteRule ^(.*) /new/index.php?cust_id=1807

这是有效的,它使用参数将浏览器重定向到正确的文件,但它会破坏所有css,js和图像链接。我知道使用绝对路径或设置基路径可以轻松解决这个问题,但我想继续使用相对路径并使其工作。

e.g。该源现在链接到css,如下所示:http://new.mydomain.com/css/file.css,而它应该是http://new.mydomain.com/new/css/file.css

提前致谢!

编辑:排除css和图像文件无法解决此问题,因为它们位于例如/新/ CSS

2 个答案:

答案 0 :(得分:0)

编辑:根据您的反馈

RewriteEngine on
# Redirect css,js,img to /new/(css,js,img) with a 301
RewriteCond %{HTTP_HOST}   ^[www\.]*new.mydomain.com [NC]
RewriteCond %{REQUEST_URI} ^/(css|js|img)/.*
RewriteRule ^(.*)$ /new/$1 [L,R=301]

# then redirect anything that's not already /new/ to the page you want
RewriteCond %{HTTP_HOST}   ^[www\.]*new.mydomain.com [NC]
RewriteCond %{REQUEST_URI} !^/new/.*
RewriteRule ^(.*) /new/index.php?cust_id=1807

这是基于我所掌握的有限信息,请参阅下面的评论。

答案 1 :(得分:0)

如何添加另一个rewriteCond?有点像...

RewriteCond %{REQUEST_URI} !^.*\.(css|js|jpe?g|png|gif)$

这将从重写中排除具有这些后缀的所有文件。

顺便说一句,我不认为这个[www\.]*看起来在你的第一个RewriteCond中是正确的......它意味着'w或w或w或w的零次或多次出现'。所以它并没有真正做任何有用的事情。