.htaccess CSS/JS/Images未从CakePHP中与主webroot不同的目录加载

.htaccess CSS/JS/Images未从CakePHP中与主webroot不同的目录加载,.htaccess,cakephp,cakephp-1.3,.htaccess,Cakephp,Cakephp 1.3,我一直在开发一个CakePHP应用程序,大多数CSS/JS/图像(图标)位于webroot目录(/var/www/App/webroot/),但对于应用程序的某些部分(Croogo)或其他页面,我需要从不同的目录加载CSS/JS/图像,即/var/www/App/views/themed/admin/webroot/ 现在我面临的问题是,当我呈现这些其他页面时,css/JS/images请求返回404 page not found状态,因为这些请求是向主webroot而不是我上面提到的不同目录发

我一直在开发一个CakePHP应用程序,大多数CSS/JS/图像(图标)位于webroot目录(/var/www/App/webroot/),但对于应用程序的某些部分(Croogo)或其他页面,我需要从不同的目录加载CSS/JS/图像,即/var/www/App/views/themed/admin/webroot/

现在我面临的问题是,当我呈现这些其他页面时,css/JS/images请求返回404 page not found状态,因为这些请求是向主webroot而不是我上面提到的不同目录发出的

有没有办法用.htaccess来处理这个问题,即 如果url包含此模式“/admin/”

例如:

CSS/JS/img文件应查找到/var/www/app/views/themed/admin/webroot/而不是var/www/app/webroot/

如果没有,是否有其他解决方案来处理这种情况

以下是主应用程序目录的.htaccess

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule    ^$    webroot/    [L]
    RewriteRule    (.*) webroot/$1    [L]     
</IfModule>
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>
生成的HTML

<a href="/edit_photo/01" id="profile-photo" class="blue" rel="shadowbox;height=100;width=400" title="Resize"><img src="/theme/admin/img/icons/16/icon16x16.png?v=1000" alt="" class="icon left" id="profile-icon" />Resize</a></div>

CakePHP 1.3版

任何想法和想法都将不胜感激

这不是它的工作原理 webroot之外的任何内容都不应是web可访问的

主题资产应位于webroot中 它们不存储在webroot中,但可以复制/链接到webroot,也可以通过资产调度流程提供服务

在这种特定情况下,这意味着,例如:

app
    views
       themed
           admin
               webroot
    webroot
        theme
            admin -> ../../views/themed/admin/webroot # <- a symlink
这是非常脆弱的,并且可能是导致结果url不指向正确文件的原因之一-而是使用绝对url(在您的应用程序中,绝对url总是相对于安装它的位置):

无论当前控制器/操作/位置如何,这都确保了正确的url。

它不是这样工作的 webroot之外的任何内容都不应是web可访问的

主题资产应位于webroot中 它们不存储在webroot中,但可以复制/链接到webroot,也可以通过资产调度流程提供服务

在这种特定情况下,这意味着,例如:

app
    views
       themed
           admin
               webroot
    webroot
        theme
            admin -> ../../views/themed/admin/webroot # <- a symlink
这是非常脆弱的,并且可能是导致结果url不指向正确文件的原因之一-而是使用绝对url(在您的应用程序中,绝对url总是相对于安装它的位置):


无论当前控制器/操作/位置如何,这都可以确保正确的url。

请在生成html(img)的位置添加cakephp代码、生成的html和cakephp版本。我想你可以用cakephp来做这件事。@Richard我已经添加了cakephp代码,生成了html和蛋糕版本,我很高兴知道是否可以用cakephp来做这件事,谢谢!您是否尝试使用此链接中的cake主题?请在生成html(img)的位置添加您的cakephp代码、生成的html和cakephp版本。我想你可以用cakephp来做这件事。@Richard我已经添加了cakephp代码,生成了html和蛋糕版本,我很高兴知道是否可以用cakephp来做这件事,谢谢!你尝试过在这个链接中使用蛋糕主题吗?我相信我在问题中犯了一个错误,url确实是,我会修复,非常感谢Hanks的答案,使用绝对url解决了问题请接受答案,否则问题仍然无法回答,导致堆栈溢出。我相信我在问题中犯了一个错误,url确实是,我修复了这个问题,非常感谢您的回答,这个问题使用绝对URL解决了。请接受答案,否则问题仍然无法回答堆栈溢出。
echo $html->image('../theme/admin/img/icons/16/icon16x16.png'
                   ^
echo $html->image('/theme/admin/img/icons/16/icon16x16.png'
                   ^