2011-07-20 34 views
6

Tôi đang cố xoá index.php khỏi các url CI của mình, nhưng đã làm theo các hướng dẫn có vẻ như nó không hoạt động.Sử dụng htaccess để xóa tệp index.php index.php trong thư mục con

Tôi có cài đặt trình viết mã đang chạy trong thư mục phụ. Có một bộ điều khiển mặc định trong cấu hình routes được gọi là main, và một controller khác gọi là 'create'. Mặc định chạy tốt, nhưng đi tới/create trả về một lỗi 324 nói No Data Received. Htaccess của tôi trông giống như sau:

<IfModule mod_rewrite.c> 

RewriteEngine On 
RewriteBase/

RewriteCond %{REQUEST_URI} ^system.* 
RewriteRule ^(.*)$ /index.php?/$1 [L] 

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

</IfModule> 

<IfModule !mod_rewrite.c> 
    ErrorDocument 404 /index.php 
</IfModule> 
+0

Đầu ra của error.log apache của bạn sẽ hữu ích để giải quyết vấn đề của bạn. – Marko

Trả lời

24

này nên là đủ:

<IfModule mod_rewrite.c> 
RewriteEngine On 

#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 
#This last condition enables access to the images and css folders, and the robots.txt file 
RewriteCond $1 !^(index\.php|public|images|robots\.txt|css) 
RewriteRule ^(.*)$ index.php/$1 [L] 
</IfModule> 
+1

Điều này có hiệu quả. Cảm ơn! – Robin

+0

Và người chiến thắng là ... cái này. – dlopezgonzalez

+0

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

7

Đây là những gì tôi sử dụng. CodeIgniter của tôi cũng chạy trong một subdir.

RewriteEngine on 
RewriteCond $1 !^(index\.php|images|swf|uploads|js|css|robots\.txt) 
RewriteRule ^(.*)$ /ci/index.php/$1 [L] 
+4

Tôi đã tìm kiếm mod_rewrite phù hợp trong nhiều giờ và đây là thứ cuối cùng đã làm việc cho tôi! Tất cả những gì tôi phải làm là thay đổi 'ci /' thành 'mysubfolder /' –

5

.htaccess add:

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

Đi vào application/config/config.php và xóa các trang chỉ mục giá trị cấu hình:

// Old 

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

// New 

$config['index_page'] = ""; 

Giải quyết Vấn đề của tôi cũng hy vọng người khác .. . :)

+0

tôi đang thử mã từ hướng dẫn sử dụng codeigniter và không hoạt động nhưng bây giờ công việc của nó như một lời cảm ơn ma thuật – Belajar

+0

Điều này làm việc cho tôi, cảm ơn! – Robin

1

Đôi khi bạn cần phải kích hoạt nó module viết lại, chạy "apache2 cho phép mô-đun viết lại":

sudo a2enmod rewrite 

Bạn cần phải khởi động lại máy chủ web để áp dụng các thay đổi:

sudo service apache2 restart 

Sau đó, folow câu trả lời của Sofia.

Các vấn đề liên quan