我正在本地网络服务器中创建多个网站。使用子文件夹时,我在动态加载图像时遇到麻烦。
这是我的结构:
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/...
时,它会查看根,这也不是正确的位置,因为我在子文件夹中。
答案 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/而不是。