【问题标题】:Redirect an image path to root level将图像路径重定向到根级别
【发布时间】:2016-10-23 05:42:19
【问题描述】:

我在子文件夹 Public_html/cake/ 中有一个 cakephp 2.x 网站 我想在不使用 http 或 https 的情况下在根服务器 (public_html) 中显示图像

Public_html/cake/images/logo.png 应该变成 Public_html/images/logo.png

知道如何用 htaccess 或其他方式制作吗?

src="<?php echo $this->webroot;?>images/logo.png

会给:

Public_html/cake/images/logo.png

我需要:

Public_html/images/logo.png

一个文件夹 我不想使用 http,因为该网站将是 http 和 https,如果它具有 http 内容,则会发出安全警告

【问题讨论】:

    标签: image .htaccess cakephp cakephp-2.0


    【解决方案1】:

    这种代码:

    src="<?php echo $this->webroot;?>images/logo.png
    

    CakePHP 项目中的模板文件不是这样编写的。有很多helper classes,这使得生成html标记更容易。

    生成 img 标签

    要生成图像标签,请使用the Html Helper

    创建一个格式化的图像标签。提供的路径应该相对于 /app/webroot/img/.

    echo $html->image('cake_logo.png', array('alt' => 'CakePHP')); 
    

    将输出:

    <img src="/img/cake_logo.png" alt="CakePHP" />
    

    与所有生成 url 的方法一样,此方法说明应用程序是否安装在子文件夹中,因此无论应用程序安装在 http://example.comhttp://example.com/folderhttp://localhost/MyProject

    如果传递以正斜杠开头的路径,则这是 相对 应用程序的安装位置。在Public_html 文件夹中安装此代码:

    echo $html->image('/images/logo.png');
    

    会产生:

    <img src="/Public_html/images/logo.png" alt="" />
    

    只获取网址

    要仅获取 url,请使用 the assetUrl method:

    // Outputs /img/logo.png
    echo $html->assetUrl('logo.png');
    

    这是 HtmlHelper 调用的方法,用于获取路径/url 以放入图像标签的 src 属性中。

    传统

    CakePHP 期望图像位于名为 img 而不是 images 的文件夹中,这就是为什么没有一个文档与您当前的用法完全匹配的原因。

    如果您希望将图像保留在原处,您可以通过定义 imageBaseUrl configuration setting 来配置应用程序,使使用与文档相匹配。

    【讨论】:

      【解决方案2】:

      将此规则作为您的第一个重定向规则插入到根 .htaccess 中:

      RewriteEngine On
      
      RewriteRule ^cake/(images/.+)$ /$1 [L,NC,R=301,NE]
      

      【讨论】:

      • 不适合用重写规则解决问题(生成错误的 url,然后用 mod rewrite 处理,而不是一开始就生成正确的 url)。
      猜你喜欢
      • 1970-01-01
      • 2014-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-04
      • 1970-01-01
      • 2017-04-02
      • 1970-01-01
      相关资源
      最近更新 更多