htaccess重定向GET变量而不触及CSS链接

时间:2013-01-22 04:49:49

标签: .htaccess mod-rewrite redirect get

好吧,我已经在stackoverflow上阅读了htaccess指南的页面和更多页面,但是仍然我还没有找到这个问题的答案。

我希望将网址www.domain.com/profile/1重定向到www.domain.com/profile.php?id=1,并将重定向到www.domain.com/profile/ranisalt进行重定向到www.domain.com/profile.php?seo=ranisalt

我正在使用此重写规则,并且在重定向时一直很好用:

Options +FollowSymlinks
RewriteEngine on
RewriteRule ^profile/([0-9]+)/ profile.php?id=$1 [NC,QSA,L]
(there is more, but not relevant)

问题是,CSS是在文件夹css /中,如果我直接通过profile.php访问?id = 1它正确加载(www.domain.com/css/style.css),但当我访问掩码,它试图在www.domain.com/profile/1/css/style.css找到css,这是找不到的。

我一直在使用它作为临时修复

RewriteRule ^(.*)/(css|js)/(.*).(css|js)$ css/$3.$4 [L]
RewriteRule ^(.*)/img/(.*).(jpg|png)$ img/$2.$3 [L]

但它看起来并不整洁:(

如何让它很好地正确加载CSS?

1 个答案:

答案 0 :(得分:0)

您的相对URI基础已更改,因此当浏览器加载www.domain.com/profile/ranisalt之类的网址时,相对指向css等内容的链接会将/profile/附加到URI的前面(从而重新开始www.domain.com/profile/css/some.css 1}})。在profile.php生成的HTML中,您需要通过将此标记添加到网页标题来添加URI基础:

<base href="/">