Url重写HTML和CSS路径

时间:2011-11-11 15:00:14

标签: php html css .htaccess

我的应用程序根目录中有以下.htaccess文件:

RewriteEngine On
RewriteRule \.(css|jpe?g|gif|png|js|ico)$ - [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]

这基本上只是将index/var=value/var2=values2/之类的路径转换为index?url=index/var=value/var2=values2/,而在index.php中,它们被详细说明为获取$controller,这是被调用的控制器的名称(在本例中为{{ 1}})和index代替$get。 (在这种情况下,它包含:$_GET e $get['var'] = 'value')。

注意:在.htacces文件和index.php所在的根文件中,我们还有$get['var2'] = 'value2'文件夹(包含控制器,视图和模型),application/文件夹初始化框架和system/文件夹,其中应包含可以访问的每个图像/ javascript / css / video / audio文件。

.htaccess允许我直接访问每个现有文件图像和CSS。哪个好。出现的唯一问题是当图像/ javascript / css / audio / video文件的路径在HTML或CSS文件中时。因此,当您致电(* 1)public/或致电(* 2)<img src="public/img/image.jpg"/>时,它就行不通。

这可以使用background-image: url(public/img/image.jpg);这样的绝对路径“解决”但是当涉及到javascript文件时它很棘手。无论如何,它根本不是解决方案,而只是一种绕过问题的方法。

我怎样才能使(* 1)和(* 2)工作?

2 个答案:

答案 0 :(得分:1)

你试过这条路吗?

/public/img/image.jpg

修改/添加

没有对此进行测试,但您可以尝试

RewriteCond %{REQUEST_URI} ^/public        [OR]
RewriteCond %{REQUEST_URI} ^/other_folder  [OR]
RewriteCond %{REQUEST_URI} ^/more_folders
    RewriteRule (.*) /project/$1

或者,让index.php处理所有内容,并且第一行是根据当前路径检查被调用文件是否存在:

//untested code
$url = str_replace('..','',$_GET['url']);
if(file_exists(dirname(__FILE__).'/'.$url)){
   //redirect to that file or serve it with PHP
   exit(0);
}

答案 1 :(得分:1)

background-image: url(public/img/image.jpg); 

将查看相对于CSS文件的public/img路径。

你应该使用的是../img/image.jpg/public/img/image.jpg