Я разработал простой сайт, который извлекает твиты из общедоступной хронологии 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, который находится в папке views внутри приложения, я использую функцию 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, который нужно установить? Спасибо, и я надеюсь, что я достаточно описателен.
Я тоже на сетке. После повторного чтения вашего вопроса и проведения небольшого тестирования (он работает для меня), я думаю, что происходит, вы забыли загрузить url
помощника.
Если вы хотите, чтобы базовый URL-адрес сайтов был доступен вам в приложении через base_url()
, вам нужно сначала загрузить помощника url
. Либо через config / autoload.php, либо загрузите его вручную в свой контроллер.
В противном случае вы можете использовать config / constants.php для определения постоянных переменных:
define('BASE_URL', 'http://site.com'); define('BASE_PATH', '/path/to/CI/folder');
Просто быстрая заметка о base_url – может быть хорошей идеей динамически установить эту переменную, так как это позволит вашему сайту поддерживать несколько доменов.
(ie $config['base_url'] = 'http://'.$_SERVER['HTTP_HOST'])
http://thecodeabode.blogspot.com/2010/10/codeigniter-supporting-multiple-domains.html немного расширяет это, предоставляя сценарии, учитывающие протокол и порт.