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-адресу.
Ade

@Ali Mohamed, до якого з файлів htaccess ви додаєте цей рядок? Я намагався, але ніякого ефекту не має
Бахденг

1
@Bahdeng вам потрібно розмістити цей фрагмент у файлі .htaccess у каталозі вашого проекту.
Алі Мохамед

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

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]
верхнього

Його сторінка 404 не знайдена з CI 3
Nipun Tyagi

38

Я знайшов відповідь на це питання тут ..... Проблема з хостинговим сервером ... Дякую всім, хто намагався .... Сподіваюся, це допоможе іншим

Поради щодо встановлення Godaddy


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

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.phpI я встановив наступні шляхи до системи та програми:

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

Примітка. Таким чином, наш вихідний код програми спочатку стає прихованим для громадськості.

Будь ласка, якщо ви, хлопці, знайдете щось неправильне з моєю відповіддю, коментуйте та виправляйте мене!
Сподіваюся, новачки знайдуть цю відповідь корисною.

Дякую!


1

Мій сайт розміщений на MochaHost, мені було важко налаштувати файл .htaccess, щоб я міг видалити index.php зі своїх URL-адрес. Однак, після деякого гуглиння, я поєднав відповідь у цій темі та інші відповіді. Мій остаточний робочий файл .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>
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.