2013-03-19 280 views
0

我尝试重写我的web应用程序的一些网址,问题是它改写图像/ CSS/JS /等藏汉... 我的.htaccess:国防部重写资源

DirectoryIndex engine.php 
RewriteEngine On 
Options -MultiViews 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ engine.php?link=$1 

和一些示例HTML:

<img src="./theme/default/images/img.png" height="50px" /> 

的事情是,如果我这样做:http://domain.com它的工作原理,但如果我这样做http://domain.com/test/asd它改写图像/asd/theme/default/images/img.png ...

回答

0

这可能不是您重写本身的问题,这可能是用于资源的src路径的问题。没有存在的文件正在被重写。如果您使用相对路径,则将URI重写为更深的路径(即)。

如果您要求http://domain.com/test/asd且资源位于http://domain.com/theme/default/images/img.png,请确保您的源路径完全限定或/default/images/img.png。根据你的描述,这听起来像资产的路径是default/images/img.png。由于您的重写使得它显示您位于名为test/asd的文件夹中,因此域上的路径变为test/asd/default/images/img.png

+0

是的,但我如何使它从corect文件夹加载?以及为什么它工作,如果我去http://domain.com/test(这里它加载corectly),但如果我深入uri它打破 – 2013-03-19 12:10:11

+0

正如我所说,你需要使src值完整路径相对于根。你不能用.htaccess来解决这个问题,因为你可以在不同的深度为两个不同的网页提供相同的页面。 – 2013-03-19 13:18:43

+0

我修正了它,我在标题中添加了一个,它可以工作... – 2013-03-19 15:58:51

0

可以使用

<base href="http://domain.com/" /> 

基础元件必须出现在文档的HEAD部分,它引用到外部源的任何元素之前。