Перенаправить путь к изображению на корневой уровень

#image #.htaccess #cakephp #cakephp-2.0

#изображение #.htaccess #cakephp #cakephp-2.0

Вопрос:

У меня есть веб-сайт cakephp 2.x во вложенной папке Public_html / cake/ Я хочу показать изображение на корневом сервере (public_html) без использования http или https

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

Ответ №1:

Такой код:

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

Ожидается, что файлы шаблонов в проекте CakePHP будут записываться не так. Существует множество вспомогательных классов, которые упрощают создание HTML-разметки.

Генерация тега img

Для создания тега изображения используйте 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.com , http://example.com/folder ИЛИ http://localhost/MyProject и т.д.

Если передан путь, начинающийся с косой черты, это относительно места установки приложения. При установке в Public_html папку этот код:

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

создало бы:

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

Получение только URL

Чтобы получить только URL-адрес, используйте метод assetURL:

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

Это метод, который HtmlHelper вызывает, чтобы получить путь / URL для помещения в src атрибут тега изображения.

Быть обычным

CakePHP ожидает, что изображения будут находиться в папке с именем img not images , поэтому ни один из документов не соответствует вашему текущему использованию.

Если вы предпочитаете сохранять изображения там, где они есть, вы можете настроить приложение таким образом, чтобы использование соответствовало документации, определив imageBaseUrl параметр конфигурации.

Ответ №2:

Вставьте это правило в качестве первого правила перенаправления в root .htaccess:

 RewriteEngine On

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

Комментарии:

1. нецелесообразно решать заданный вопрос с помощью правила перезаписи (генерируя неправильный URL и обрабатывая его с помощью mod rewrite, вместо того, чтобы просто генерировать правильный URL в первую очередь).