Codeigniter - không có tệp đầu vào nào được chỉ định


86

Tôi là người mới bắt đầu trong Codeigniter và tôi đã xem một hướng dẫn về CI và chỉ đang cố gắng làm một việc đơn giản. Tôi đã tải xuống CI và thêm tệp này vào thư mục bộ điều khiển, nhưng nó sẽ không hoạt động.

<?php

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

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

Khi tôi cố gắng truy cập nó bằng http: //..../index.php/site, tôi nhận được đầu ra ... "không có tệp đầu vào nào được chỉ định" .... nhân tiện, tôi đặt tên tệp là site.php


Hãy thử kiểm tra liên kết này và xem nó có khắc phục được sự cố không.
Vap0r

Không, không giúp được gì, cảm ơn vì đã nỗ lực
koool

Câu trả lời:


291

Chỉ cần thêm dấu ? ký sau index.php trong tệp .htaccess:

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

và nó sẽ hoạt động!


Đối với tôi, điều này phục vụ chuyển hướng 301 và tôi kết thúc bằng /? / Trong URL.
Ade

@Ali Mohamed, bạn thêm dòng này vào tệp htaccess nào? Tôi đã cố gắng nhưng không có bất kỳ tác
Bahdeng

1
@Bahdeng bạn cần đặt đoạn mã này trong tệp .htaccess trong thư mục dự án của bạn.
Ali Mohamed

thay đổi trên đường theo thư mục ứng dụng của bạn như thế nào nếu bạn ứng dụng không có trong thư mục gốc, ghi mã sau ở vị trí của dòng ở trênRewriteRule ^(.*)$ /sub-directory/index.php?/$1 [L,QSA]
skovy

1
@NSGodMode đó sẽ là trong thư mục gốc CodeIgniter ngoài index.php
Ali Mohamed

58

Godaddy lưu trữ nó dường như đã được sửa chữa .htaccess, bản thân tôi nó đang hoạt động

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

đến

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

thay đổi trên đường theo thư mục ứng dụng của bạn như thế nào nếu bạn ứng dụng không có trong thư mục gốc, ghi mã sau ở vị trí của dòng ở trênRewriteRule ^(.*)$ /sub-directory/index.php?/$1 [L,QSA]
skovy

Nhận được tôi trang 404 của nó không tìm thấy với CI 3
Nipun Tyagi

38

Tôi đã tìm thấy câu trả lời cho câu hỏi này ở đây ..... Vấn đề là máy chủ lưu trữ ... Tôi cảm ơn tất cả những người đã cố gắng .... Hy vọng điều này sẽ giúp ích cho những người khác

Mẹo cài đặt Godaddy


thay đổi trên đường theo thư mục ứng dụng của bạn như thế nào nếu bạn ứng dụng không có trong thư mục gốc, ghi mã sau ở vị trí của dòng ở trênRewriteRule ^(.*)$ /sub-directory/index.php?/$1 [L,QSA]
skovy

17

RewriteEngine, DirectoryIndex trong tệp .htaccess của ứng dụng CodeIgniter

Tôi vừa thay đổi nội dung tệp .htaccess và như được hiển thị trong câu trả lời liên kết sau . Và đã thử làm mới trang (không hoạt động và không thể tìm thấy yêu cầu đối với bộ điều khiển của tôi) nó đã hoạt động.

Sau đó, chỉ vì nghi ngờ, tôi đã hoàn tác các thay đổi mà tôi đã thực hiện đối với .htaccess bên trong thư mục public_html của mình trở lại nội dung .htaccess ban đầu . Vì vậy, nó bây giờ như sau (ban đầu là nó):

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]

Và bây giờ nó cũng hoạt động.

Gợi ý: Có vẻ như trước đây Quy tắc viết lại chưa được thiết lập rõ ràng trong bối cảnh Máy chủ.

Cấu trúc tệp của tôi như sau:

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

Và trong phần này, index.phptôi đã thiết lập các đường dẫn sau đến hệ thống và ứng dụng:

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

Lưu ý: làm như vậy, lúc đầu, mã nguồn ứng dụng của chúng tôi sẽ bị ẩn đối với công chúng.

Làm ơn, nếu các bạn thấy câu trả lời của tôi có gì sai sót, hãy comment và sửa lại cho tôi!
Hy vọng người mới bắt đầu sẽ thấy câu trả lời này hữu ích.

Cảm ơn!


1

Trang web của tôi được lưu trữ trên MochaHost, tôi đã gặp khó khăn khi thiết lập tệp .htaccess để có thể xóa index.php khỏi url của mình. Tuy nhiên, sau một số googling, tôi đã kết hợp câu trả lời trên chủ đề này và các câu trả lời khác. Tệp .htaccess hoạt động cuối cùng của tôi có nội dung sau:

<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>
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.