2013-06-18 4 views
0

Мой сайт работал нормально, но сломался, когда я загрузил его на свой хост (GoDaddy) - при нажатии на ссылки на моем веб-сайте я получил «No input file defined». Я наткнулся на это - https://github.com/EllisLab/CodeIgniter/wiki/Godaddy-Installation-Tips И попробовал свой первый наконечникCodeigniter Breaks On GoDaddy

$config['index_page'] = "index.php?"; 

В противоположность, как это обычно устанавливается (без знака вопроса)

Это работает, теперь мой сайт ссылки не ломаются больше. ОДНАКО, теперь моя Библиотека LightOpenID прерывается (она перенаправляет бесконечно).

Если кто-нибудь имеет четкое объяснение того, что происходит с URLS и что я могу сделать, чтобы либо A) удалите знак вопроса из index.php и до сих пор мой сайт работать или B) Держите? но выясните, как не сломать мою библиотеку LightOpenID.

+1

goddady = худший хозяин когда-либо, двигайтесь сейчас; thank me last –

+0

lol ... уже заплачено ... –

ответ

0

Dagon, Пожалуйста, не говорите ничего о каком-либо sevice, если вы не знаете правильных сведений об услуге и о поведении технологии, которое вы используете.

Вместо следующих шагов по https://github.com/EllisLab/CodeIgniter/wiki/Godaddy-Installation-Tips, выполните следующие действия:

Перейти к вашему GoDaddy менеджеру учетной записи файла -> Каталог WebRoot -> Создать php5.ini, если он не существует, и место следующих строк: CGI. fix_pathinfo = 1

Теперь вам необходимо перезапустить веб-процесс:

Вход менеджеру аккаунта. Нажмите веб-хостинг. Рядом с учетной записью хостинга, которую вы хотите использовать, нажмите «Запустить». В разделе «Статистика» & раздел «Мониторы» выберите «Процессы системы». В списке слева щелкните процесс, который хотите просмотреть, или нажмите «Все процессы», чтобы просмотреть все процессы одновременно. Чтобы завершить процесс, щелкните соответствующую кнопку конца на панели инструментов.

Теперь вы можете использовать URI_PROTOCOL as Auto.

0

Вы все еще можете пропустить index.php? на $ config ['index_page'].

Вам нужно будет изменить $ conifg ['base_url'] в каталог установки codeingniter как $ conifg ['base_url'] = 'http://www.randomsite.com/module/';

Это работало для меня очень хорошо. Теперь сайт правильно маршрутизируется и без index.php?

Кроме того, пожалуйста, следуйте приведенной выше ссылке на GitHub хранилище CodeIgniter в

1

CodeIgniter работает довольно успешно на GoDaddy Виртуальный хостинг

Вы можете установить его довольно успешно, используя Советы по установке CodeIgniter на CI вики на GitHub.

Эти направления предназначены для совместного использования GoDaddy.Общий хостинг означает, что сайт использует один экземпляр веб-сервера с несколькими другими клиентами GoDaddy и что веб-сервер перенаправляет людей на конкретное с использованием имени домена URI, поскольку IP-адрес для экземпляра сервера неоднозначен. Если у вас виртуальный частный хостинг (VPS) и частный IP-адрес, эти указания не нужны. Но поскольку проблемы, с которыми большинство людей сталкиваются с CodeIgniter на хостинге GoDaddy, связаны с проблемами, вызванными тем, как работает общий хостинг, это должно быть полезно.

Другая проблема, с которой люди иногда сталкиваются, заключается в том, что они используют свою учетную запись хостинга GoDaddy как «песочницу» для тестирования различных технологий. Я делаю это, поэтому есть дополнительные соображения в том, где разместить свой экземпляр CodeIgniter и куда поместить другие технологии, которые вы используете в отношении CodeIgniter. У меня также есть экземпляры WordPress, Drupal и Joomla для тестирования различных аспектов их в моем одном хостинговом пространстве. Они отлично работают рядом с CodeIgniter.

Если ваш экземпляр CodeIgniter находится в подкаталоге, а не в корневой папке вашего общего пространства учетных записей хостинга на сервере, это может работать и должно быть размещено в настройках.

Существует два параметра, которые требуют корректировки для CodeIgniter для работы с GoDaddy. Первый - в файле config.php CodeIgniter, а второй - в файле .htaccess в корневой папке, содержащей экземпляр CodeIgniter.

CodeIgniter Config.php найдено в приложении CodeIgniter/Config/config.php

$config['base_url'] = ''; 

$config['index_page'] = 'index.php?'; 

$config['uri_protocol'] = 'QUERY_STRING'; 

файл .htaccess в корневой папке, содержащей CodeIgniter

Сначала рассмотрим простой случай, когда CodeIgniter находится в корневом каталоге учетной записи общего хостинга. Ниже приведено основное содержимое файла .htaccess, чтобы перейти к вышеуказанным настройкам.

Строки ДОЛЖНЫ ИМЕТЬ символы конца строки в стиле UNIX (т. Е. Только символ lf). Вы НЕ ДОЛЖНЫ использовать редактор (например, Блокнот Windows), который ставит cr/lf в конце строки или вы должны иметь способ их изменения в lf только до или во время загрузки.

Когда вы FTP-файл на сервер, клиент FTP не должен помещать символ конца строки, чтобы быть чем-то иным, чем lf. Если вы используете и FTP-клиент, который может модифицировать символы конца строки из стиля Windows (например, cr/lf) в стиле UNIX (например, lf) как часть передачи, вы можете исправить проблему cr/lf при загрузке на сервер.

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?/$1 [L] 

Ваш виртуальный хостинг папки аккаунта/файлы теперь должны быть похожи на:

... 
html/application 
html/system 
html/user_guide 
... 
html/.htaccess 
... 

где HTML является корневым документом папки Shared Hosting учетной записи.

Первая строка в .htaccess гарантирует, что Rewrite включен.

Ресурсы в CodeIgniter упоминаются с использованием URI с структурой типа URL/controller/method/parameter (s). Следующие две строки применяют правило перезаписи только к файлам и каталогам, которые на самом деле не существуют.

Если вы хотите ссылаться на то, что не является контроллером CodeIgniter, а является реальным каталогом и/или именем файла для чего-либо вне CodeIgniter, вы должны отключить переписывание.Примером может служить Руководство пользователя CodeIgniter, которое поставляется с CodeIgniter и которое живет за пределами приложения CodeIgniter, обычно в той же корневой папке, что и экземпляр CodeIgniter, и по умолчанию используется папка с именем user_guide. Если вы хотите иметь возможность ссылаться на Руководство пользователя в своей реальной папке, внешней от CodeIgniter, для работы, то для этого необходимо отключить правило перезаписи. Это относится к любым другим «реальным» папкам вне CodeIgniter.

По соображениям безопасности настоящие папки/файлы в структуре папок CodeIgniter содержат свои собственные файлы .htaccess, чтобы предотвратить прямой доступ к ним с помощью URI. Вы должны убедиться, что любая реальная папка, которую вы создаете, и хотите использовать CodeIgniter, защищена таким образом. Посмотрите на любой из файлов .htaccess в CodeIgniter в своих папках, покажите, как это сделать. Содержать следующие один оператор:

Deny from all 

Чтобы получить CodeIgniter для работы на GoDaddy виртуальный хостинг, мы на самом деле не отключающий с помощью index.php? изнутри CodeIgniter. Вместо этого мы используем механизм строкой запроса HTML для структуры контроллера/метода/параметра (ов) для CodeIgniter. Последнее правило гарантирует, что index.php? вставляется в URI, так что ваша структура контроллера/метода/параметра (ов) в URI превращается в строку запроса для index.php CodeIgniter для обработки.

Все это должно работать, если экземпляр CodeIgniter находится в корневом каталоге документа общей учетной записи хостинга и имени домена, которое указывает на нее.

Sharing Root Документ с другими технологиями

Вышеуказанные параметры должны работать, если вы поставите CodeIgniter в ваш виртуальный хостинг корня документа наряду с другими технологиями (например, Joomla, WordPress, Drupal и т.д.) до тех пор, как другие технологии содержатся в реальных папках/файлах, которые не конфликтуют с папками и файлами CodeIgniter.

Использование подпапку для CodeIgniter Instance

Иногда желательно, чтобы CodeIgniter НЕ находиться в корневом каталоге документов вашего общего хостинга счет, но, вместо этого, в подкаталоге. Я делаю это, чтобы экземпляры Drupal, WordPress и Joomla также в своих собственных подкаталогах смешивались между структурой папок CodeIgniter. Для этого для файла .htaccess требуются дополнительные инструкции. Например, если вы хотите, чтобы CodeIgniter проживал в каталоге с именем code-ignitter, подчиненным вашему корню документа для вашей учетной записи с общим хостингом, тогда следующий файл .htaccess будет использоваться с помощью подпапки для корня CodeIgniter. Он не должен быть помещен в корневую папку документов общего доступа для учетной записи хостинга, но, вместо этого, в корне CodeIgniter, который, в данном случае, является суб-папка с кодовым воспламенитель:

RewriteEngine on 
RewriteBase /code-igniter/ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?/$1 [L] 

Структура каталога для этого примера аналогично:

html/code-igniter/application 
html/code-igniter/system 
html/code-igniter/user_guide 
... 
html/code-igniter/.htaccess 

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

Дополнительная строка RewriteBase гарантирует, что перезаписи всегда работают из каталога, который является корневым каталогом экземпляра CodeIgniter. Последующие строки по-прежнему гарантируют, что перезаписи не применяются к реальным папкам/файлам также в моем корне для документов для других технологий. Я надеюсь, что это де-мистизирует, чтобы заставить CodeIgniter работать на GoDaddy в двух разных сценариях.

Это же решение также будет работать без изменений, если экземпляр CodeIgniter находится под подчиненным множеству подкаталогов. Например, предположит, что общий хостинг корневого учетной записи документа HTML каталог и экземпляр CodeIgniter подчинен код-воспламенитель каталог подчиненного мой-приложения каталог:

html/my-application/code-igniter/application 
html/my-application/code-igniter/system 
html/my-application/code-igniter/user_guide 

Такого расположение удобно, если вы хотите использовать один экземпляр для разработка с помощью IDE, которая автоматически подталкивает изменения к экземпляру разработки при сохранении файла и имеет другой экземпляр в другой подкаталоге для развертываний для тестов интеграции и производства. Файлы .htaccess и config.php будут работать без изменений.

+0

Кстати, это решение, скорее всего, будет конфликтовать с использованием строк запроса для ваших страниц с CI-обработкой, но это ставит вопрос о том, почему любая страница, построенная на CI, будет использовать строку запроса вместо нормальная структура параметров СИ. – Jim