我的应用程序根目录中有以下.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)工作?
答案 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