Codeigniter - входной файл не указан

86

Я новичок в Codeigniter, видел учебник по CI и просто пытался сделать простую вещь. Я загрузил CI и добавил этот файл в каталог контроллера, но он не работает.

<?php

class site extends CI_Controller
{
    public function index()
    {
        echo "Hello World";
    }

    function dosomething()
    {
        echo "Do Something";
    }   
}    
?>

Когда я пытаюсь получить к нему доступ с помощью http: //..../index.php/site, я получаю вывод ... "входной файл не указан" .... кстати, я назвал файл site.php

кооол
источник
Попробуйте проверить эту ссылку и посмотреть, решит ли она проблему.
Vap0r
Нет, не помогает, спасибо за усилия
koool

Ответы:

291

Просто добавьте ? подпишите после index.php в файле .htaccess:

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

и это сработает!

Али Мохамед
источник
Для меня это перенаправление 301, и я получаю /? / В URL-адресе.
Адэ
@Ali Mohamed, в какой из файлов htaccess вы добавляете эту строчку? Я пробовал, но
безрезультатно
1
@Bahdeng, вам нужно поместить этот фрагмент в файл .htaccess в каталоге вашего проекта.
Али Мохамед
измените строку выше в соответствии с каталогом вашего приложения, например, если ваше приложение не находится в корневом каталоге, напишите следующий код вместо строки вышеRewriteRule ^(.*)$ /sub-directory/index.php?/$1 [L,QSA]
skovy
1
@NSGodMode, который будет находиться в корневом каталоге codeigniter помимо index.php
Али Мохамед
58

Хостинг Godaddy кажется исправленным .htaccess, я сам работаю

RewriteRule ^(.*)$ index.php/$1 [L]

к

RewriteRule ^(.*)$ index.php?/$1 [QSA,L]
Секар Суреш С
источник
измените строку выше в соответствии с каталогом вашего приложения, например, если ваше приложение не находится в корневом каталоге, напишите следующий код вместо строки вышеRewriteRule ^(.*)$ /sub-directory/index.php?/$1 [L,QSA]
skovy
Я получаю 404-ю страницу, не найденную с CI 3
Нипун Тьяги
38

Я нашел ответ на этот вопрос здесь ..... Проблема заключалась в сервере хостинга ... Благодарю всех, кто пробовал .... Надеюсь, это поможет другим

Советы по установке Godaddy

кооол
источник
измените строку выше в соответствии с каталогом вашего приложения, например, если ваше приложение не находится в корневом каталоге, напишите следующий код вместо строки вышеRewriteRule ^(.*)$ /sub-directory/index.php?/$1 [L,QSA]
skovy
17

RewriteEngine, DirectoryIndex в файле .htaccess приложений CodeIgniter

Я просто изменил содержимое файла .htaccess и, как показано в следующих ссылках отвечает. И попытался обновить страницу (что не сработало и не смог найти запрос к моему контроллеру), это сработало.

Затем, просто из-за своих сомнений, я отменил изменения, которые я внес в свой .htaccess в моей папке public_html, обратно к исходному содержимому .htaccess . Итак, теперь это выглядит следующим образом (как было изначально):

DirectoryIndex index.php
RewriteEngine on
RewriteCond $1 !^(index\.php|images|css|js|robots\.txt|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php?/$1 [L,QSA]

И теперь тоже работает.

Подсказка: похоже, что раньше правила перезаписи не были четко настроены в контексте сервера.

Моя файловая структура выглядит следующим образом:

/
|- gheapp
|    |- application
|    L- system
|
|- public_html
|    |- .htaccess
|    L- index.php

А в разделе index.phpя настроил следующие пути к системе и приложению:

$system_path = '../gheapp/system';
$application_folder = '../gheapp/application';

Заметка: при этом исходный код нашего приложения сначала становится скрытым для публики.

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

Благодарность!

Рандика Вишман
источник
1

Мой сайт размещен на MochaHost, мне было сложно настроить файл .htaccess, чтобы я мог удалить index.php из своих URL-адресов. Однако после некоторого поиска в Google я объединил ответ в этой теме и другие ответы. Мой последний рабочий файл .htaccess имеет следующее содержимое:

<IfModule mod_rewrite.c>
    # Turn on URL rewriting
    RewriteEngine On

    # If your website begins from a folder e.g localhost/my_project then 
    # you have to change it to: RewriteBase /my_project/
    # If your site begins from the root e.g. example.local/ then
    # let it as it is
    RewriteBase /

    # Protect application and system files from being viewed when the index.php is missing
    RewriteCond $1 ^(application|system|private|logs)

    # Rewrite to index.php/access_denied/URL
    RewriteRule ^(.*)$ index.php/access_denied/$1 [PT,L]

    # Allow these directories and files to be displayed directly:
    RewriteCond $1 ^(index\.php|robots\.txt|favicon\.ico|public|app_upload|assets|css|js|images)

    # No rewriting
    RewriteRule ^(.*)$ - [PT,L]

    # Rewrite to index.php/URL
    RewriteRule ^(.*)$ index.php?/$1 [PT,L]
</IfModule>
Зимний MC
источник