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

标签 css regex apache .htaccess mod-rewrite

我正在本地网络服务器中创建多个网站。在使用子文件夹时从 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/

相关文章:

web-services - 客户端的 mod_perl 服务器事件

python - apache上的python flask应用程序的随机问题

python - Bootstrap css 未加载到 Django 模板中

javascript - 使用全局标志,我无法检测到单词 'blue' 的多次出现?

regex - 匹配空输入的 flex 脚本?

java - Apache-Mina FTPServer 数据库用户管理器故障

html - 字体在 Mac 上不显示

css - RoR Assets 管道生成额外链接

javascript - 强制 Iframe 进入折叠 Bootstrap 组件以适合屏幕

regex - 如何使用 Regex 替换 Google Data Studio 中日期字段中的方括号?