我正在本地网络服务器中创建多个网站。在使用子文件夹时从 css 文件动态加载图像时遇到问题。
这是我的结构:
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/...
时,它会在根目录中查找,这也不是正确的位置,因为我在一个子文件夹中。
最佳答案
保持你的 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]
关于css - 在子文件夹中使用 htaccess 从 css 动态加载图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20355145/