CodeIgniter xóa index.php khỏi url


159

Các url hiện tại của tôi trông như thế này [mysite]index.php/[rest of the slug].
Tôi muốn thoát index.phpkhỏi những url này.

mod_rewriteđược kích hoạt trên máy chủ apache2 của tôi. Trong config,$config['index_page'] = '';

.htaccessTập tin gốc codeignitor của tôi chứa,

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

Nhưng nó vẫn không hoạt động. Tôi làm sai ở đâu?



Tại sao câu hỏi này có nhiều câu trả lời trùng lặp
Tilak Maddy

Câu trả lời:


239

Hãy thử như sau

Mở config.php và thực hiện các thay thế sau

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

đến

$config['index_page'] = ""

Trong một số trường hợp, cài đặt mặc định uri_protocolkhông hoạt động đúng. Chỉ cần thay thế

$config['uri_protocol'] ="AUTO"

bởi

$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] 

Lưu ý: mã .htaccess khác nhau tùy thuộc vào máy chủ lưu trữ. Trong một số máy chủ lưu trữ (ví dụ: Godaddy) cần sử dụng thêm? trong dòng cuối cùng của mã trên. Dòng sau sẽ được thay thế bằng dòng cuối cùng trong trường hợp áp dụng:

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

4
Tôi đã thử mã này RewriteRule ^(.*)$ index.php/$1 [L]nhưng tôi vẫn có thể xem trang theo cả hai cách domain.com/about-us, domain.com/index.php/about-us và domain.com/index.php?/about-us tạo ra Lỗi SEO tức là trùng lặp thẻ tiêu đề và mô tả meta trùng lặp
Musaddiq Khan

Cảm ơn bạn đã trả lời, tôi đã gặp vấn đề tương tự và thêm RewriteCond đầu tiên để nó hoạt động. Bạn có thể giải thích lý do tại sao hướng dẫn sử dụng (ở đây: codeigniter.com/userguide3/general/iêu ) không đề cập đến nó không?
Claudio

Cảm ơn câu trả lời của bạn, tôi đã gặp vấn đề tương tự từ tank-auth
striker_axel

$_POSThoặc isset($_POST)không hoạt động sau khi thêm này.
DCK

1
và đừng quên thay đổi cấu hình apache như được đề cập trong stackoverflow.com/a/14807463/1537413
Dika

134

Bước: -1 Mở thư mục ứng dụng / config config và mở tập tin. tìm và thay thế đoạn mã dưới đây trong tập tin config.php.

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

Bước: -2 Chuyển đến thư mục CodeIgniter của bạn và tạo .htaccess

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

Bước: -3 Viết mã dưới đây vào tệp .htaccess

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

Bước: -4 Trong một số trường hợp, cài đặt mặc định cho uri_protatio không hoạt động đúng. Để giải quyết vấn đề này, chỉ cần mở tệp ứng dụng / config / config.php, ứng dụng, sau đó tìm và thay thế đoạn mã dưới đây

//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" 

Đó là tất cả, nhưng trong máy chủ wamp, nó không hoạt động bởi vì Rewrite_module mặc định bị tắt nên chúng tôi cần phải kích hoạt nó. cho việc này làm như sau

  1. Nhấp chuột trái vào biểu tượng WAMP
  2. Apache
  3. Mô-đun Apache
  4. Nhấp chuột trái viết lại_module

Tài liệu gốc

Liên kết ví dụ


6
tôi đã phải đặt .htaccess vào thư mục gốc thay vì thư mục "application" để thực hiện công việc này
Mawardy

Tôi không có thư mục CodeIgniter. Bạn đang nói về cái gì vậy?
Nicolas S.Xu

1
nó cũng xóa index.php nhưng tôi cũng cần xóa thêm dấu gạch chéo ngược '/'
Pradeep Kumar Mitchaharan

sau khi thay đổi trong config.php và tạo tập tin .htaccess. Tôi đang gặp lỗi Lỗi phân tích cú pháp: lỗi cú pháp, không mong đợi '$ config' (T_VARIABLE) trong ứng dụng \ config \ config.php trên dòng 55
Fawwad

Cảm ơn bạn đã trả lời. Đối với tôi, tôi cần cập nhật tệp htaccess của mình như được hiển thị và sau đó đảm bảo rằng đó là anh chị em của thư mục hệ thống, không phải bên trong nó.
Kiky Rodriguez

44

Bước 1 :

Thêm phần này vào tập tin htaccess

<IfModule mod_rewrite.c>
  RewriteEngine On
  #RewriteBase /

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

Bước 2 :

Xóa index.php trong cấu hình codeigniter

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

Bước 3 :

Cho phép ghi đè htaccess trong Cấu hình (Lệnh) của Apache

sudo nano /etc/apache2/apache2.conf

và chỉnh sửa tập tin và thay đổi thành

AllowOverride All

cho thư mục www

Bước 4 :

Đã bật apache mod viết lại (Command)

sudo a2enmod rewrite

Bước 5:

Khởi động lại Apache (Lệnh)

sudo /etc/init.d/apache2 restart

3
"AllowOverride All" trong apache2.conf đã giải quyết vấn đề cho tôi, vì điền vào .htaccess không được sử dụng theo mặc định.
Laurent Jégou

1
Tôi ước tôi có thể cho bạn tiền thưởng cho việc này! Cứu ngày của tôi. Đã dành 2 giờ sau này: |
Kiran P.

1
Dường như đối với các bản phân phối Linux gần đây, điều đầu tiên người ta cần làm là chỉnh sửa quy tắc AllowOveride
Nasz Njoka Sr.

Cuối cùng đã có nó để làm việc. Cảm ơn. Quy tắc AllowOveride giúp tôi với vấn đề này. Tôi đang sử dụng Ubuntu 16.04
Apit John Ismail

Giải pháp tuyệt vời, Cảm ơn :)
Razib Al Mamun

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

sử dụng

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

nếu bạn có url trong thứ tự này site.com/index.php/ class / method / id

NB: xóa index.php trong config.php nên được cấu hình [index_page] = ""

NB: nhận thấy sự khác biệt ở dòng cuối cùng thay vì $ 0 sử dụng $ 1


cái này hiệu quả với tôi Câu trả lời trên không. Tôi đã không kiểm tra các câu trả lời dưới đây.
Jam Ville

Điều này làm việc cho tôi nhưng tôi đã phải thay đổi giao thức uri từ 'AUTO; thành 'REQUEST_URI' như thế này: $ config ['uri_protatio'] = 'REQUEST_URI';
isabelle martz

RewriteRule .* index.php/$1 [PT,L]- điều này sẽ không vượt qua đường dẫn URL trừ khi bạn thay đổi RewriteRule mẫu từ .*sang (.*). Tuy nhiên, nếu bạn đang sử dụng $config['uri_protocol'] = 'REQUEST_URI';thì điều này không liên quan.
MrWhite

16

Bước 1 => Đặt tệp .htaccess của bạn vào thư mục gốc nơi tồn tại các thư mục ứng dụng và hệ thống.

Bước 2 => Nếu đường dẫn web của bạn sử dụng thư mục con như - yourdomain.com/project/ - thì hãy sử dụng mã sau trong tệp htaccess

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

Nếu đường dẫn web của bạn sử dụng thư mục gốc như - yourdomain.com - thì hãy sử dụng mã sau trong tệp htaccess

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

Đây là câu trả lời tốt nhất và đầy đủ. điều thư mục con là những gì làm cho nó tốt hơn so với các câu trả lời khác.
Bhasta Shah

Điều này NÊN là câu trả lời. Câu trả lời được bình chọn với phần về: RewriteCond% {REQUEST_FILENAME}! -F RewriteCond% {REQUEST_FILENAME}! -D Điều đó không hiệu quả với tôi.
GunWanderer

11

trên htaccess của bạn sử dụng này,

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]

Hi vọng điêu nay co ich.


root_folder_name -> bạn đã thay đổi điều này với tên thư mục gốc của bạn ??
yuvaraj Bathrabagu

Vâng, tôi đã làm điều đó. Tôi đặt root codeigniter của tôi ở đó. Đúng không?
Nihar Sarangi

Buddy Tôi đang sử dụng mã .htaccess này trong hai dự án CI của tôi !! và cả hai đều hoạt động tốt !!
yuvaraj Bathrabagu

11

Có hai bước:

1) Chỉnh sửa config.php

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

Đến

$config['index_page'] = '’;

2) Tạo / Chỉnh sửa tập tin .htaccess

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

6
  1. tạo .htaccesstập tin và đặt mã này

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

    $config['index_page'] = ''; 

loại bỏ index.phphiện tại trong config.phptập tin

  1. viết lại từ máy chủ của bạn.

6

1. Tạo một tệp mới .htaccess trên thư mục gốc.

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

2. Chuyển đến tệp config.php của bạn và thay đổi từ $config['index_page'] = 'index.php' thành$config['index_page'] = ''


6

Giải quyết nó với 2 bước.

  1. Cập nhật 2 tham số trong ứng dụng tệp cấu hình / config / config.php
$config['index_page'] = '';
$config['uri_protocol'] = 'REQUEST_URI';
  1. Cập nhật tệp .htaccess trong thư mục gốc
<IfModule mod_rewrite.c>
    RewriteEngine On
      RewriteBase /
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>

5

Hãy thử cái này. Nó có thể giúp bạn khi nó làm việc cho tôi.

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

đặt mã trong tập tin htaccess gốc của bạn và đảm bảo rằng bạn có

$config['index_page'] = '';

trong tập tin cấu hình của bạn.

Xin vui lòng cho tôi biết nếu bạn phải đối mặt với bất kỳ vấn đề.


Đó chính xác là những gì tôi đã làm.
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'] = '';

Vui lòng xem video này để tham khảo https://www.youtube.com/watch?v=HFG2nMDn35Q


4

Vâng tất cả các câu trả lời là tốt nhưng đối với một người mới (lần đầu tiên làm) những điều này là khó hiểu. Có các tệp htaccess khác nằm trong bộ điều khiển nhưng chúng ta phải chỉnh sửa hoặc thêm htaccess trong thư mục dự án chính.

Đây là thư mục codeigniter của bạn, nơi tệp nằm trong ứng dụng, hệ thống, tài sản, tải lên, v.v.

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

Thay đổi tập tin này như được viết dưới đây:

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

và tất nhiên là bạn cần thay đổi hai dòng mã trong 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";

Vì một số lý do, tất cả những câu trả lời này không phù hợp với tôi. Tôi có thể truy cập các trang khi tôi thêm /index.php/ trong url.
Bilal Ahmad

3

Cả phát triển và sản xuất

    # 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

trước hết bạn phải vào công cụ viết lại máy chủ apache trên. Liên kết này sẽ giúp bạn cho điều đó

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]

đây sẽ là tập tin .htaccess của bạn. Bây giờ hãy thử nó. Thiết lập này hoạt động với tôi.


2

bạn có thể đi đến tệp config \ config.php và xóa giá trị index.php khỏi biến này

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

tạo tập tin .htaccess và dán mã này vào đó.

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

cơ hội tốt


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

Chỉ có ba bước được yêu cầu để xóa index.php khỏi url trong Codeigniter

1) Tạo tệp .htacess song song với chủ sở hữu ứng dụng và chỉ cần sao chép qua đoạn mã sau:

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) Thay đổi $ config ['index_page'] thành trống trong config.php trong thư mục ứng dụng như dưới đây:

$config['index_page'] = '';

3) Kích hoạt tính năng viết lại của Viết lại_module.

Khởi động lại apache của bạn và nó được thực hiện.

Chi tiết: http://sforsuresh.in/removing-index-php-from-url-of-codeigniter-in-wamp/


1

Tôi nghĩ rằng tất cả các cài đặt của bạn là tốt nhưng bạn đang làm sai vị trí tệp htaccess của bạn và thêm htaccess của bạn vào tệp dự án của bạn

dự án_folder-> htaccess

và thêm mã này vào htaccess của bạn

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

1

bạn có thể truy cập tệp application \ config \ config.php và xóa index.php

 $ config ['index_page'] = 'index.php'; // xóa index.php

Thay đổi thành

 $ config ['index_page'] = '';


1

dùng thử RewriteEngine này

        # 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

Điều này làm việc cho tôi. Đã thử nghiệm trong codeigniter 3.1.11, PHP 5.6.40 Tôi sử dụng một máy chủ ảo trong cấu hình apache2 của mình trong máy chủ thử nghiệm.

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

Và /.htaccess nội dung

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

0

Thực hiện theo các bước này, vấn đề của bạn sẽ được giải quyết

1- Tải xuống tệp .htaccess từ đây https://www.dropbox.com/s/tupcu1ctkb8pmmd/.htaccess?dl=0

2- Thay đổi tên thư mục CodeIgnitor trên Dòng # 5. giống như tên thư mục của tôi là abc (thêm tên của bạn)

3- Lưu tệp .htaccess trên thư mục chính (abc) của thư mục codeignitor của bạn

4- Thay đổi uri_protatio từ AUTO thành PATH_INFO trong tệp Config.php

Lưu ý: Trước hết, bạn phải kích hoạt mod_rewrite từ httpd.conf của apachi bằng cách xóa các nhận xét


0

Sử dụng mã này. Thay đổi dòng thứ 2 khi bạn có tên thư mục của bạn. Trường hợp tập tin index.php và ứng dụng thư mục, thư mục hệ thống nằm. Chủ yếu là các vấn đề xảy ra do dòng thứ hai. chúng tôi không cấu hình tên thư mục nơi dự án được đặt. Quan trọng là dòng thứ 2. Điều này là đơn giản để loại bỏ index.php. RewriteEngine trên 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]    

Đi đến tập tin điều khiển / config.php.

cấu hình ['index_url'] = '';

Tham khảo để nghiên cứu thêm.

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

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


0

Bên cạnh những câu trả lời này, người ta có thể chỉ cần thêm index.php hoặc chỉnh sửa nó (nếu nó đã có) - để bảo mật bạn muốn tắt index.php, từ việc liệt kê các tệp trong thư mục trang web của bạn - sau đó thay đổi nội dung vào

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

0

Điều nhỏ: (Tùy chọn)

Hãy thử khởi động lại Apache của bạn sau khi cập nhật trạng thái công cụ ghi lại trong vhost như Rewrite ON.

Một điều quan trọng cần chú ý:

Trong tệp Apache vhosts, kiểm tra xem bạn có dòng script này hay không AllowOverride None , vui lòng xóa / nhận xét dòng này.

Tập lệnh vhosts của tôi: (Trước)

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

Tập lệnh vhosts của tôi: (Sau)

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

Tôi đối mặt với cùng một vấn đề, vật lộn trong khoảng 1 ngày, tất cả đều ổn. Sau đó, bằng phương pháp thử và sai, đã tìm thấy thứ này. Sau khi loại bỏ điều này, công việc của tôi đã hoàn thành. URL bây giờ không tìm kiếm index.php :)


0

nếu tất cả các giải pháp trên không hoạt động thì trong thư mục dự án của bạn sẽ có hai tệp index.html và index.php, đổi tên index.html thành index_1.html và duyệt dự án của bạn.


0

Lưu ý sự khác biệt với "?" ký tự sau ".php", đặc biệt là khi giao dịch với CodeIgniter:

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

so với

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

Nó phụ thuộc vào một số thứ khác .. nếu không hoạt động, hãy thử tùy chọn khác!


0

Bạn có thể xóa index.php khỏi url bằng cách đặt một số mã vào .htaccess

Đường dẫn tệp: 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]

Hy vọng nó sẽ hoạt động.


0

Trong CodeIgniter 3.16 trong việc sử dụng htaccess để

xóa tệp index.php

& cũng thế

chuyển hướng HTTP đến HTTPS

Thực hiện theo các mã:

  • đi đến application\config\config.phptập tin

Thay đổi

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

Đến

$config['index_page'] = '';
  • Bây giờ, Mở tệp .htaccess và cập nhật mã bên dưới
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] 
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.