使用子文件夹中的htaccess从css动态加载图像

时间:2013-12-03 15:29:52

标签: css regex apache .htaccess mod-rewrite

我正在本地网络服务器中创建多个网站。使用子文件夹时,我在动态加载图像时遇到麻烦。

这是我的结构:

Root folder
    site1
        index.php (loads templates using Smarty)
        .htaccess
        public_files
            css
            js
            img
            templates

这就是我的.htaccess的样子:

RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^([a-zA-Z]+)$             index.php?uri=$1 [L]
RewriteRule ^(css|js|img)/(.*)$       public_files/$1/$2 [L]

加载我的css确实有效:

<link href="css/style.css" rel="stylesheet" />

但是在这个CSS中我无法加载图像

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

我认为这是因为从css文件夹中调用了这一行。但是当我使用/img/...时,它会查看根,这也不是正确的位置,因为我在子文件夹中。

2 个答案:

答案 0 :(得分:1)

保持site1/.htaccess像这样:

RewriteEngine On
RewriteBase /site1/

RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^([a-zA-Z]+)$ index.php?uri=$1 [L]

RewriteCond %{SCRIPT_FILENAME} !-f    
RewriteCond %{REQUEST_URI} !/public_files/ [NC]
RewriteRule (?:^|/)css/(img/.+)$ public_files/$1 [L,NC]

RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{REQUEST_URI} !/public_files/ [NC]
RewriteRule (?:^|/)((?:css|js|img)/.+)$ public_files/$1 [L,NC]

答案 1 :(得分:0)

url("img/background.jpg")说img /是相对到持有css的目录(css /,我推测)。所以它可以在/ css / img /中查找。试试../img/而不是。