我正在尝试使用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
答案 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的零次或多次出现'。所以它并没有真正做任何有用的事情。