【问题标题】:Dynamically load images from css using htaccess in subfolder使用子文件夹中的 htaccess 从 css 动态加载图像
【发布时间】:2013-12-09 17:12:29
【问题描述】:

我正在本地网络服务器中创建多个网站。使用子文件夹时,动态加载 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/... 时,它会在根目录中查找,这也不是正确的位置,因为我在子文件夹中。

【问题讨论】:

    标签: css regex apache .htaccess mod-rewrite


    【解决方案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]
    

    【讨论】:

    • 这样连我的css都没有加载。
    • 你能在 Firebug 中打开你的页面并检查Net tab,然后告诉我你得到的 css 的 URL 会为你生成 404 吗?
    • 现在它还尝试打开 http://localhost/site1/css/img/background.jpg 并得到一个 Internal Server Error
    • 它正在从 css 文件夹中查看http://localhost/site1/css/img/background.jpg
    • 我也收到了消息:Not found: /site1/public_files/css/img/background.jpg
    【解决方案2】:

    url("img/background.jpg") 说 img/ 是 relative 到保存 css 的目录(css/,我想)。所以它可能在 /css/img/ 中查找。改用 ../img/。

    【讨论】:

    • 是的,这就是我使用.htaccess 文件的原因。当我将网站移动到根文件夹时,我不想更改每条路径。
    猜你喜欢
    • 2016-01-11
    • 2017-10-04
    • 2011-07-07
    • 2021-05-08
    • 2020-10-08
    • 2022-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多