CodeIgniter ลบ index.php จาก url


160

URL [mysite]index.php/[rest of the slug]ที่ปัจจุบันของฉันมีลักษณะเช่นนี้
ฉันต้องการแยกindex.phpจาก URL เหล่านี้

mod_rewriteเปิดใช้งานบนเซิร์ฟเวอร์ apache2 ของฉัน ในconfig,$config['index_page'] = '';

.htaccessไฟล์root codeignitor ของฉันมี

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]

แต่ก็ยังไม่ทำงาน ฉันจะไปไหนผิด


2
มีความเป็นไปได้ที่ซ้ำกันของวิธีการลบ "index.php" ในเส้นทางของ
codeigniter

ทำไมคำถามนี้มีคำตอบที่ซ้ำกันมากมาย
Tilak Maddy

คำตอบ:


239

ลองทำสิ่งต่อไปนี้

เปิด config.php และทำตามแทนที่

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

ถึง

$config['index_page'] = ""

ในบางกรณีการตั้งค่าเริ่มต้นสำหรับuri_protocolทำงานไม่ถูกต้อง เพียงแค่แทนที่

$config['uri_protocol'] ="AUTO"

โดย

$config['uri_protocol'] = "REQUEST_URI"

.htaccess

RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA] 

หมายเหตุ: รหัส. htaccess แตกต่างกันไปขึ้นอยู่กับการโฮสต์เซิร์ฟเวอร์ ในการโฮสต์เซิร์ฟเวอร์บางตัว (เช่น: Godaddy) จำเป็นต้องใช้สิ่งพิเศษหรือไม่? ในบรรทัดสุดท้ายของโค้ดด้านบน บรรทัดต่อไปนี้จะถูกแทนที่ด้วยบรรทัดสุดท้ายในกรณีที่เกี่ยวข้อง:

// Replace last .htaccess line with this line
RewriteRule ^(.*)$ index.php?/$1 [L,QSA] 

4
ฉันได้ลองใช้รหัสนี้แล้ว RewriteRule ^(.*)$ index.php/$1 [L]แต่ฉันยังสามารถดูหน้านี้ได้ทั้งใน domain.com/about-us, domain.com/index.php/about-us และ domain.com/index.php?/about-us ข้อผิดพลาด SEOคือแท็กชื่อซ้ำกันและคำอธิบายเมตาซ้ำซ้อน
Musaddiq Khan

ขอบคุณสำหรับคำตอบฉันพบปัญหาเดียวกันและเพิ่ม RewriteCond แรกให้ทำงานได้ คุณสามารถอธิบายเพิ่มเติมเกี่ยวกับสาเหตุที่คู่มือ (ที่นี่: codeigniter.com/userguide3/general/ … ) ไม่ได้พูดถึงมันได้หรือไม่
Claudio

ขอบคุณสำหรับคำตอบของคุณฉันได้รับปัญหาเดียวกันจาก tank-auth
striker_axel

$_POSTหรือisset($_POST)ไม่ทำงานหลังจากเพิ่มสิ่งนี้
DCK

1
และอย่าลืมเปลี่ยนการตั้งค่า apache ตามที่กล่าวไว้ในstackoverflow.com/a/14807463/1537413
Dika

135

ขั้นตอน: -1เปิดโฟลเดอร์“ application / config” และเปิดไฟล์“ config.php“ ค้นหาและแทนที่รหัสด้านล่างในไฟล์ config.php

//find the below code   
$config['index_page'] = "index.php" 
//replace with the below code
$config['index_page'] = ""

ขั้นตอนที่: -2ไปที่โฟลเดอร์ CodeIgniter และสร้าง. htaccess

Path:
Your_website_folder/
application/
assets/
system/
.htaccess <——— this file
index.php

ขั้นตอนที่: -3เขียนโค้ดด้านล่างในไฟล์. htaccess

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L] 
</IfModule>

ขั้นตอน: -4ในบางกรณีการตั้งค่าเริ่มต้นสำหรับ uri_protocol ทำงานไม่ถูกต้อง เพื่อแก้ปัญหานี้เพียงแค่เปิดไฟล์“ application / config / config.php” จากนั้นค้นหาและแทนที่รหัสด้านล่าง

//Not needed for CodeIgniter 3 its already there.
//find the below code
$config['uri_protocol'] = "AUTO"
//replace with the below code
$config['uri_protocol'] = "REQUEST_URI" 

นั่นทั้งหมด แต่ในเซิร์ฟเวอร์ wamp มันไม่ทำงานเพราะ rewrite_module ถูกปิดใช้งานโดยค่าเริ่มต้นดังนั้นเราจึงจำเป็นต้องเปิดใช้งาน สำหรับสิ่งนี้ทำต่อไปนี้

  1. คลิกซ้ายที่ไอคอน WAMP
  2. อาปาเช่
  3. โมดูล Apache
  4. คลิกซ้ายที่ rewrite_module

เอกสารต้นฉบับ

ลิงค์ตัวอย่าง


6
ฉันต้องใส่. htaccess ในโฟลเดอร์รูทแทนที่จะเป็นโฟลเดอร์ "application" เพื่อให้ใช้งานได้
Mawardy

ฉันไม่มีโฟลเดอร์ CodeIgniter คุณกำลังพูดเรื่องอะไร
Nicolas S.Xu

1
มันลบ index.php แต่ฉันต้องลบเครื่องหมายทับขวาพิเศษ '/' ด้วย
Pradeep Kumar Prabaharan

หลังจากเปลี่ยนแปลงใน config.php และสร้างไฟล์. htaccess ฉันได้รับข้อผิดพลาดการแยกวิเคราะห์: ข้อผิดพลาดทางไวยากรณ์, '$ config' (T_VARIABLE) ที่ไม่คาดคิดใน application \ config \ config.php ที่บรรทัด 55
Fawwad

ขอบคุณสำหรับคำตอบ สำหรับฉันฉันต้องการอัปเดตไฟล์ htaccess ของฉันตามที่แสดงจากนั้นตรวจสอบให้แน่ใจว่ามันเป็นพี่น้องของโฟลเดอร์ระบบไม่ใช่ภายในไฟล์
Kiky Rodriguez

44

ขั้นตอนที่ 1 :

เพิ่มในไฟล์ htaccess

<IfModule mod_rewrite.c>
  RewriteEngine On
  #RewriteBase /

  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^ index.php [QSA,L]
</IfModule>

ขั้นตอนที่ 2 :

ลบ index.php ในการกำหนดค่า codeigniter

$config['base_url'] = ''; 
$config['index_page'] = '';

ขั้นตอนที่ 3:

อนุญาตให้ลบล้าง htaccess ใน Apache Configuration (Command)

sudo nano /etc/apache2/apache2.conf

และแก้ไขไฟล์ & เปลี่ยนเป็น

AllowOverride All

สำหรับโฟลเดอร์ www

ขั้นตอนที่ 4:

เปิดใช้งาน apache mod rewrite (คำสั่ง)

sudo a2enmod rewrite

ขั้นตอนที่ 5:

รีสตาร์ท Apache (Command)

sudo /etc/init.d/apache2 restart

3
"AllowOverride All" ใน apache2.conf แก้ปัญหาให้ฉันเนื่องจากการเติม. htaccess จะไม่ถูกใช้โดยค่าเริ่มต้น
Laurent Jégou

1
ฉันหวังว่าฉันจะให้โบนัสกับคุณได้! บันทึกวันของฉัน ใช้เวลา 2 ชั่วโมงหลังจากนี้: |
ราน

1
ดูเหมือนว่าเมื่อเร็ว ๆ นี้ Linux Distros สิ่งแรกที่เราต้องทำคือแก้ไขกฎ
AllowOveride

ในที่สุดก็ให้มันทำงาน ขอบคุณ กฎ AllowOveride ช่วยฉันด้วยปัญหานี้ ฉันใช้อูบุนตู 16.04
Apit John Ismail

วิธีแก้ปัญหาที่ยอดเยี่ยมขอบคุณ :)
Razib Al Mamun

16
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]

ใช้

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$1 [PT,L]

หากคุณมี URL ตามลำดับไซต์นี้ /index.php/class/method/id

หมายเหตุ: ลบ index.php ใน config.php ควรเป็น config [index_page] = ""

หมายเหตุ: สังเกตเห็นความแตกต่างที่บรรทัดสุดท้ายแทนที่จะเป็น $ 0 ใช้ $ 1


มันใช้งานได้สำหรับฉัน คำตอบข้างต้นไม่ได้ ฉันยังไม่ได้ทดสอบคำตอบด้านล่าง
Jam Ville

สิ่งนี้ใช้ได้สำหรับฉัน แต่ฉันต้องเปลี่ยนโปรโตคอล uri จาก 'AUTO; ถึง 'REQUEST_URI' เช่นนี้: $ config ['uri_protocol'] = 'REQUEST_URI';
isabelle martz

RewriteRule .* index.php/$1 [PT,L]- นี้จะไม่ส่ง URL เส้นทางจนกว่าคุณจะเปลี่ยนRewriteRule รูปแบบจากการ.* (.*)อย่างไรก็ตามหากคุณใช้$config['uri_protocol'] = 'REQUEST_URI';งานอยู่สิ่งนี้ไม่เกี่ยวข้องเลย
MrWhite

16

ขั้นตอนที่ 1 => วางไฟล์. htaccess ของคุณในโฟลเดอร์รูทที่มีโฟลเดอร์แอปพลิเคชันและระบบอยู่

ขั้นตอนที่ 2 => หากเว็บพา ธ ของคุณใช้โฟลเดอร์ย่อยเช่น - yourdomain.com/project/ - จากนั้นใช้รหัสต่อไปนี้ในไฟล์ htaccess

RewriteEngine on
RewriteBase    /project/
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /project/index.php/$1 [L]

หากเว็บพา ธ ของคุณใช้รูทโฟลเดอร์เช่น - yourdomain.com - ให้ใช้รหัสต่อไปนี้ในไฟล์ htaccess

RewriteEngine on
RewriteBase    /
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]

นี่คือคำตอบที่ดีที่สุดและสมบูรณ์ที่สุด สิ่งโฟลเดอร์ย่อยคือสิ่งที่ทำให้ดีกว่าคำตอบอื่น ๆ
Bhavik Shah

นี่ควรเป็นคำตอบ คำตอบที่โหวตพร้อมส่วนที่เกี่ยวกับ: RewriteCond% {REQUEST_FILENAME}! -f RewriteCond% {REQUEST_FILENAME}! -d มันไม่ได้ผลสำหรับฉัน
GunWanderer

11

ใน htaccess ของคุณใช้สิ่งนี้

RewriteEngine On
RewriteBase /root_folder_name/
RewriteCond %{REQUEST_URI} ^system.*
RewriteCond $1 !^(index\.php|images|js|uploads|css|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

หวังว่านี่จะช่วยได้


root_folder_name -> คุณเปลี่ยนชื่อโฟลเดอร์รูทหรือไม่?
yuvaraj bathrabagu

ใช่ฉันทำอย่างนั้น ฉันใส่รหัสลงในรากของฉัน ถูกต้องหรือไม่
Nihar Sarangi

เพื่อนฉันใช้รหัส. htaccess นี้ในสองโครงการ CI ของฉัน !! และทั้งคู่ก็ทำงานได้ดี !!
yuvaraj bathrabagu

11

มีสองขั้นตอน:

1) แก้ไข config.php

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

ถึง

$config['index_page'] = '’;

2) สร้าง / แก้ไขไฟล์. htaccess

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

6
  1. ทำ.htaccessไฟล์และใส่รหัสนี้

     RewriteEngine on
     RewriteCond $1 !^(index\.php|resources|robots\.txt)
     RewriteCond %{REQUEST_FILENAME} !-f
     RewriteCond %{REQUEST_FILENAME} !-d
     RewriteRule ^(.*)$ index.php/$1 [L,QSA] 
  2. เปลี่ยนแปลง

    $config['index_page'] = ''; 

นำindex.phpเสนอในconfig.phpไฟล์

  1. เขียนซ้ำจากเซิร์ฟเวอร์ของคุณ

6

1. สร้างไฟล์ใหม่. htaccess บนไดเรกทอรีราก

<IfModule mod_rewrite.c>
RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1 [L] 
</IfModule>`

2. ไปที่ไฟล์ config.php ของคุณแล้วเปลี่ยนจาก $config['index_page'] = 'index.php'เป็น$config['index_page'] = ''


6

แก้ไขมันด้วย 2 ขั้นตอน

  1. อัพเดตพารามิเตอร์ 2 ในแอ็พพลิเคชันไฟล์config / config / config.php
$config['index_page'] = '';
$config['uri_protocol'] = 'REQUEST_URI';
  1. อัพเดตไฟล์. htaccessในโฟลเดอร์รูท
<IfModule mod_rewrite.c>
    RewriteEngine On
      RewriteBase /
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>

5

ลองอันนี้มันอาจช่วยให้คุณทำงานได้ดีสำหรับฉัน

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]

ใส่รหัสในรูท htaccess ของคุณและตรวจสอบให้แน่ใจว่าคุณมี

$config['index_page'] = '';

ในไฟล์ปรับแต่งของคุณ

โปรดแจ้งให้เราทราบหากคุณประสบปัญหาใด ๆ


นั่นคือสิ่งที่ฉันทำ
Nihar Sarangi

4
+ Copy .htaccess from Application to Root folder
+ edit .htaccess and put

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /ci_test/

    #Removes access to the system folder by users.
    #Additionally this will allow you to create a System.php controller,
    #previously this would not have been possible.
    #'system' can be replaced if you have renamed your system folder.
    RewriteCond %{REQUEST_URI} ^system.*
    RewriteRule ^(.*)$ /index.php?/$1 [L]

    #When your application folder isn't in the system folder
    #This snippet prevents user access to the application folder
    #Submitted by: Fabdrol
    #Rename 'application' to your applications folder name.
    RewriteCond %{REQUEST_URI} ^application.*
    RewriteRule ^(.*)$ /index.php?/$1 [L]

    #Checks to see if the user is attempting to access a valid file,
    #such as an image or css document, if this isn't true it sends the
    #request to index.php
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>

<IfModule !mod_rewrite.c>
    # If we don't have mod_rewrite installed, all 404's
    # can be sent to index.php, and everything works as normal.
    # Submitted by: ElliotHaughin

    ErrorDocument 404 /index.php
</IfModule>

Note: make sure your web server is enable for  "rewrite_module"

+ Remove index.php from $config['index_page'] = 'index.php';
- edit config.php in application/config
- search for index.php
change it from  $config['index_page'] = 'index.php'; to  $config['index_page'] = '';

โปรดดูวิดีโอนี้สำหรับการอ้างอิงhttps://www.youtube.com/watch?v=HFG2nMDn35Q


4

ดีคำตอบทั้งหมดเหล่านี้เป็นสิ่งที่ดี แต่สำหรับมือใหม่ (ซึ่งจะทำครั้งแรก) เหล่านี้มีความสับสน มีไฟล์ htaccess อื่น ๆ ที่อยู่ในคอนโทรลเลอร์ แต่เราต้องแก้ไขหรือเพิ่ม htaccess ในโฟลเดอร์โครงการหลัก

นี่คือโฟลเดอร์ codeigniter ของคุณซึ่งมีไฟล์อยู่เช่นแอปพลิเคชันระบบสินทรัพย์การอัปโหลดและอื่น ๆ

Your_project_folder/
application/
assets/
cgi-bin/
system/
.htaccess---->(Edit this file if not exist than create it)
index.php

เปลี่ยนไฟล์นี้ตามที่เขียนไว้ด้านล่าง:

<IfModule mod_rewrite.c>
  RewriteEngine On
  # !IMPORTANT! Set your RewriteBase here and don't forget trailing and leading
  #  slashes.
  # If your page resides at http://www.example.com/mypage/test1
  # then use RewriteBase /mypage/test1/
  # Otherwise /
  RewriteBase /
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>

<IfModule !mod_rewrite.c>
  # If we don't have mod_rewrite installed, all 404's
  # can be sent to index.php, and everything works as normal.
  # Submitted by: Anand Pandey
  ErrorDocument 404 /index.php
</IfModule>

และแน่นอนคุณต้องเปลี่ยนโค้ดสองบรรทัดใน application / config / config.php

//find the below code   
$config['index_page'] = "index.php";
$config['uri_protocol'] ="AUTO" 
//replace with the below code
$config['index_page'] = "";
$config['uri_protocol'] = "REQUEST_URI";

ด้วยเหตุผลบางอย่างคำตอบทั้งหมดนี้ใช้ไม่ได้สำหรับฉัน ฉันสามารถเข้าถึงหน้าเมื่อฉันเพิ่ม /index.php/ ใน url
Bilal Ahmad

3

ทั้งการพัฒนาและการผลิต

    # Development
    RewriteEngine On
    RewriteBase /your_local_folder/
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond $1 !^(index\.php|images|scripts|styles|vendor|robots\.txt)
    RewriteRule ^(.*)$ index.php/$1 [L]

    #Production PHP5 CGI mode
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond $1 !^(index\.php|images|scripts|styles|vendor|robots\.txt)
    RewriteRule ^(.*)$ index.php?/$1 [L]

3

ก่อนอื่นคุณต้องไปที่เซิร์ฟเวอร์ apache rewrite engine บนลิงค์นี้จะช่วยคุณได้

http://www.anmsaiful.net/blog/php/enable-apache-rewrite-module.html

RewriteEngine On
RewriteBase /your_folder_name/

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

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

นี่จะเป็นไฟล์. htaccess ของคุณ ตอนนี้ลองใช้การตั้งค่านี้ใช้ได้สำหรับฉัน


2

คุณสามารถไปที่ไฟล์ config \ config.phpและลบค่า index.php ออกจากตัวแปรนี้

$config['index_page'] = 'index.php'; // delete index.php

สร้างไฟล์. htaccess และวางรหัสนี้

<IfModule mod_rewrite.c>

 Options +FollowSymLinks

 RewriteEngine On
 #Send request via index.php
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule ^(.*)$ index.php/$1 [L]

</IfModule>

โอกาสที่ดี


2
  Removing index.php from url of codeigniter   

Three steps are require to remove index.php from url in Codeigniter.

1)Create .htacess file in parallel to application holder and just copy past the following code:

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

2) Change $config['index_page'] to blank in config.php in application folder as below:

$config['index_page'] = '';

3) Enable rewrite_module of apache.

1

มีเพียงสามขั้นตอนเท่านั้นที่จำเป็นในการลบ index.php จาก url ใน Codeigniter

1) สร้างไฟล์. htacess ขนานกับเจ้าของแอปพลิเคชันและเพียงคัดลอกโค้ดต่อไปนี้:

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

2) เปลี่ยน $ config ['index_page'] เป็นค่าว่างใน config.php ในโฟลเดอร์แอปพลิเคชันด้านล่าง:

$config['index_page'] = '';

3) เปิดใช้งาน“ rewrite_module” ของ apache

รีสตาร์ท apache ของคุณแล้วทำ

รายละเอียด: http://sforsuresh.in/removing-index-php-from-url-of-codeigniter-in-wamp/


1

ฉันคิดว่าการตั้งค่าทั้งหมดของคุณนั้นดี แต่คุณทำเพื่อวางไฟล์ htaccess ของคุณผิดและเพิ่ม htaccess ของคุณไปยังไฟล์โครงการของคุณ

project_folder-> htaccess

และเพิ่มรหัสนี้ใน htaccess ของคุณ

RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]

1

คุณสามารถไปที่ไฟล์ application \ config \ config.php และลบ index.php

 $ config ['index_page'] = 'index.php'; // ลบ index.php

เปลี่ยนไป

 $ config ['index_page'] = '';


1

ลองใช้ RewriteEngine นี้

        # Removes index.php from ExpressionEngine URLs
        RewriteCond $1 !\.(gif|jpe?g|png)$ [NC]
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule ^(.*)$ /index.php/$1 [L]
</IfModule>

1

มันใช้งานได้สำหรับฉัน ทดสอบใน codeigniter 3.1.11, PHP 5.6.40 ฉันใช้ virtualhost ใน apache2 config ในเซิร์ฟเวอร์ทดสอบ

<VirtualHost *:80>
     ServerAdmin webmaster@dummy-host2.example.com
     DocumentRoot (__DIR__)
     ServerName mydomain
     ##ErrorLog "logs/dummy-host2.example.com-error.log"
     ##CustomLog "logs/dummy-host2.example.com-access.log" common
     <Directory "(__DIR__)">
        Require all granted
        AllowOverride All
   </Directory>
</VirtualHost>

และ /.htaccess เนื้อหา

    <IfModule mod_rewrite.c>
       RewriteEngine On
       RewriteCond %{REQUEST_FILENAME} !-f
       RewriteCond %{REQUEST_FILENAME} !-d
       RewriteRule ^(.*)$ index.php/$1 [L] 
    </IfModule>

0

ทำตามขั้นตอนเหล่านี้ปัญหาของคุณจะได้รับการแก้ไข

1- ดาวน์โหลดไฟล์. htaccess จากที่นี่ https://www.dropbox.com/s/tupcu1ctkb8pmmd/.htaccess?dl=0

2- เปลี่ยนชื่อไดเรกทอรี CodeIgnitor ในบรรทัด # 5 เหมือนชื่อไดเรกทอรีของฉันคือ abc (เพิ่มชื่อของคุณ)

3- บันทึกไฟล์. htaccess ในไดเรกทอรีหลัก (abc) ของโฟลเดอร์ Codeignitor ของคุณ

4- เปลี่ยน uri_protocol จาก AUTO เป็น PATH_INFO ในไฟล์ Config.php

หมายเหตุ: ก่อนอื่นคุณต้องเปิดใช้งาน mod_rewrite จาก httpd.conf ของ apachi โดยการลบความคิดเห็น


0

ใช้รหัสนี้ เปลี่ยนบรรทัดที่ 2 เมื่อคุณมีชื่อโฟลเดอร์ ในกรณีที่แอปพลิเคชันไฟล์ index.php และโฟลเดอร์อยู่ในโฟลเดอร์ระบบ ปัญหาส่วนใหญ่เกิดขึ้นเนื่องจากบรรทัดที่สอง เราไม่ได้กำหนดค่าชื่อโฟลเดอร์ที่เป็นที่ตั้งของโครงการ สำคัญคือบรรทัดที่ 2 นี่ง่ายต่อการลบ index.php RewriteEngine บน RewriteBase / project_folder_name RewriteCond% {REQUEST_FILENAME}! -f RewriteCond% {REQUEST_FILENAME}! -d RewriteRule. * index.php / $ 0 [PT, L]

#RewriteEngine on
#RewriteCond $1 !^(index\.php|images|robots\.txt)
#RewriteRule ^(.*)$ index.php/$1 [L]    

ไปที่ไฟล์ controller / config.php

การ config [ 'index_url'] = '';

อ้างอิงเพื่อการศึกษาเพิ่มเติม

https://ellislab.com/expressionengine/user-guide/urls/remove_index.php.html

https://ellislab.com/blog/entry/fully-removing-index.php-from-urls


0

นอกจากคำตอบเหล่านี้คุณสามารถเพิ่ม index.php หรือแก้ไขได้ (ถ้ามีอยู่แล้ว) - เพื่อความปลอดภัยที่คุณต้องการปิดการใช้งาน index.php อย่างไรก็ตามจากการแสดงรายการไฟล์ในไดเรกทอรีเว็บไซต์ของคุณ - จากนั้นเปลี่ยนเนื้อหาเป็น

<?php
   header('location:your_required_starting.php'); 
?>

0

สิ่งเล็ก ๆ น้อย ๆ : (ไม่จำเป็น)

ลองรีสตาร์ท Apache หลังจากอัปเดตสถานะเอ็นจินใหม่ใน vhosts Rewrite ONดังนี้

สิ่งสำคัญอย่างหนึ่งที่ควรสังเกต:

ในไฟล์ Apache vhosts ตรวจสอบว่าคุณมีบรรทัดสคริปต์นี้ AllowOverride None หรือไม่ถ้าใช่โปรดลบ / แสดงความคิดเห็นบรรทัดนี้

สคริปต์ไฟล์ vhosts ของฉัน: (ก่อนหน้า)

<VirtualHost *:80>
    DocumentRoot "/path/to/workspace"
    ServerName ciproject
    ErrorLog "/path/to/workspace/error.log"
    CustomLog "/path/to/workspace/access.log" common
    Directory   "/path/to/workspace">
        Options Indexes FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory> 
</VirtualHost>

สคริปต์ไฟล์ vhosts ของฉัน: (หลังจาก)

<VirtualHost *:80>
    DocumentRoot "/path/to/workspace"
    ServerName ciproject
    ErrorLog "/path/to/workspace/error.log"
    CustomLog "/path/to/workspace/access.log" common
    Directory   "/path/to/workspace">
        Options Indexes FollowSymLinks
        #AllowOverride None
        Order allow,deny
        Allow from all
    </Directory> 
</VirtualHost>

ฉันต้องเผชิญกับปัญหาเดียวกันพยายามประมาณ 1 วันทุกอย่างดี ในภายหลังโดยวิธีการทดลองและข้อผิดพลาดพบสิ่งนี้ หลังจากลบสิ่งนี้งานของฉันก็ประสบความสำเร็จ ตอนนี้ URL ไม่ได้ค้นหา index.php :)


0

หากโซลูชันด้านบนทั้งหมดไม่ทำงานในโฟลเดอร์โครงการของคุณไฟล์ทั้งสองจะเป็น index.html และ index.php ให้เปลี่ยนชื่อ index.html เป็น index_1.html และเรียกดูโครงการของคุณ


0

บันทึกความแตกต่างของเครื่องหมาย "?" ที่เพิ่มเข้ามา อักขระหลัง ".php" โดยเฉพาะอย่างยิ่งเมื่อต้องรับมือกับ CodeIgniter:

เขียนซ้ำ ^ (. *) $ index.php / $ 1 [L]

เมื่อเทียบกับ

เขียนซ้ำ ^ (. *) $ index.php? / $ 1 [L]

มันขึ้นอยู่กับหลาย ๆ อย่าง .. หากไม่ได้ผลให้ลองใช้ตัวเลือกอื่น!


0

คุณสามารถลบindex.phpออกจาก url โดยวางรหัสบางส่วนใน. htaccess

เส้นทางไฟล์: root> .htacess

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d


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

หวังว่ามันจะได้ผล


0

ใน CodeIgniter 3.16 ในการใช้ htaccess

ลบไฟล์ index.php

& ยัง

เปลี่ยนเส้นทาง HTTP เป็น HTTPS

ปฏิบัติตามคือรหัส:

  • ไปที่application\config\config.phpไฟล์

ทำการเปลี่ยนแปลง

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

ถึง

$config['index_page'] = '';
  • ตอนนี้เปิดไฟล์. htaccess แล้วอัปเดตรหัสด้านล่าง
RewriteEngine on
RewriteBase /

## Redirect SSL
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R,L]

## Remove fron url index.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond $1 !^/(index\.php|assets/|humans\.txt)
RewriteRule ^(.*)$ index.php/$1 [L] 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.