#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 в первую очередь).