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 ตัวไหนแอดไลน์มา ฉันพยายาม แต่ไม่มีผลใด ๆ
Bahdeng

1
@Bahdeng คุณต้องวางข้อมูลโค้ดนี้ในไฟล์. htaccess ในไดเรกทอรีโครงการของคุณ
Ali Mohamed

เปลี่ยนบรรทัดด้านบนตามไดเรกทอรีแอปพลิเคชันของคุณเช่นถ้าคุณไม่ได้อยู่ในไดเรกทอรีรากให้เขียนโค้ดต่อไปนี้แทนบรรทัดด้านบนRewriteRule ^(.*)$ /sub-directory/index.php?/$1 [L,QSA]
skovy

1
@NSGodMode ที่จะอยู่ในไดเร็กทอรี root codeigniter นอกเหนือจาก index.php
Ali Mohamed

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
Nipun Tyagi

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 ของฉันได้ อย่างไรก็ตามหลังจาก googling ฉันได้รวมคำตอบในชุดข้อความนี้และคำตอบอื่น ๆ ไฟล์. 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>
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.