2

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

该网站位于根目录下的 /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 和图像链接。我知道使用绝对路径或设置基本路径可以轻松解决这个问题,但我想继续使用相对路径并让它工作。

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

提前致谢!

编辑:排除 css 和图像文件不会解决这个问题,因为它们位于例如 /new/css

4

2 回答 2

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

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

于 2012-12-09T18:47:32.953 回答
0

添加另一个 rewriteCond 怎么样?就像是...

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

这将从重写中排除任何带有这些后缀的文件。

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

于 2012-12-09T18:53:45.090 回答