使用mod_rewrite同时保持相对链接不变

时间:2013-11-29 19:18:47

标签: .htaccess mod-rewrite

我正在尝试在我正在开发的网站上实现干净的网址。

我正在使用.htaccess:

Options +FollowSymLinks
RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule ^(.*)$ index.php?page=$1 [QSA,L]

当用户转到www.site.com/catalogue时,apache会将其发送到:www.site.com/index.php?page=catalogue。那没关系。

但如果用户转到www.site.com/catalogue/item,该网站会丢失相关链接(css,javascript,图片)。

如果css文件位于css / site.css中,则apache认为html要求catalogue/css/site.css

那么:在使用mod_rewrite时如何保持相对链接完整?

此外,我希望该解决方案具有足够的自适应能力,以便能够在文件夹中工作,例如:www.domain.com/folder/catalogue/item仍然可以引用www.domain.com/folder/index.php?page=catalogue

谢谢

1 个答案:

答案 0 :(得分:0)

有一个简单的解决方法:

对资源文件使用绝对路径,例如* .css,*。js,* .png,* .gif,* .jpg。即,

您从(BAD)修改HTML代码:

<style rel="stylesheet" type="text/css" href="catalogue/css/site.css" />

=&GT; GOOD:

 <style rel="stylesheet" type="text/css" href="/catalogue/css/site.css" />

这需要您重新编写PHP脚本。