Codeigniter: Base_url, похоже, не работает - PullRequest
1 голос
/ 18 июня 2010

Я разработал простой сайт, который извлекает твиты из общедоступной временной шкалы Twitter, кэширует их в течение 60 секунд и так далее.Недавно я переместил хосты из Hostgator в Mediatemple, и мой сайт ранее нормально работал на Hostgator.

Мое приложение не использует соединение с базой данных, а также не использует какую-либо форму базы данных с плоскими файлами.Твиты кэшируются в файле XML, хранящемся в корневом каталоге, но это не так важно.

Включен помощник по URL, как показано ниже (это моя строка помощников из autoload.php):$autoload['helper'] = array('url');

Я также удалил файл index.php из URL-адреса с помощью директив .htaccess, и это снова работало на Hostgator (см. Мой код .htaccess ниже):

RewriteEngine On
RewriteRule ^(application) - [F,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]

В моем файле представления home.php, который находится в папке представлений внутри приложения, я использую функцию base_url (), которая ранее работала над Hostgator внутри моих файлов представлений, и добавляю в нее базовое значение href в моем заголовке: <base href="<?php echo base_url(); ?>" />

Вот как выглядит значение base_url в файле config.php:

$config['base_url'] = "http://threetune.com/";

Хотя, похоже, происходит то, что base_url вообще не видно.Похоже, что оно не отражает значение base_url, поскольку по какой-то причине оно кажется пустым.

Что делает более странным то, что у меня есть ссылка в другом файле представления, называемом «fetch.php», и по какой-то причине она, похоже, удаляет значение (фильтрация XSS отключена): <a href="threetune/show"><img src="assets/images/cookie.jpg" /></a> ThreetuneЧасть / show не отображается, и я вижу только пустое значение href, подобное этому <a href=""><img src="assets/images/cookie.jpg" /></a>

Может кто-нибудь увидеть что-то неправильное, что я мог сделать, какое-то ограничение сервера Mediatemple или флаг PHP.iniчто нужно установить?Спасибо, и я надеюсь, что я достаточно описательный.

Ответы [ 2 ]

3 голосов
/ 23 июня 2010

Я тоже в сетке. Перечитав ваш вопрос и проведя небольшое тестирование (оно работает для меня), я думаю, что происходит то, что вы забыли загрузить помощник url.

Если вы хотите, чтобы базовый URL сайтов был доступен для использования в приложении через base_url(), вам сначала нужно загрузить помощник url. Либо через config / autoload.php, либо загрузите его вручную в свой контроллер.

В противном случае вы можете использовать config / constants.php для определения постоянных переменных:

define('BASE_URL', 'http://site.com');
define('BASE_PATH', '/path/to/CI/folder');
0 голосов
/ 08 октября 2010

Просто краткая заметка о base_url - возможно, будет хорошей идеей динамически установить эту переменную, поскольку она позволит вашему сайту поддерживать несколько доменов.

(i.e. $config['base_url']    = ‘http://’.$_SERVER['HTTP_HOST'])

http://thecodeabode.blogspot.com/2010/10/codeigniter-supporting-multiple-domains.html немного расширяетсяна это, предоставляя сценарии, которые принимают во внимание протокол и порт.

...