2013-01-12 37 views
7

Cấu trúc thư mục của tôi là/var/www/CI/với tất cả các thư mục, ứng dụng, hệ thống trong thư mục CI. Đã tạo tệp .htaccess trong CI.Không thể xóa index.php khỏi URL CodeIgniter

Sau đây là mã trong .htacess.

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

Vẫn localhost/CI/blog cho lỗi 404. Bất cứ ai có thể hướng dẫn về nơi mà quy tắc này là sai?

Trả lời

26

hãy thử như sau

Lúc đầu, chắc chắn rằng bạn thiết lập các tập tin cấu hình như sau ..

$config['index_page'] = ''; 

Cũng đảm bảo rằng mod_rewrite được kích hoạt trong file httpd.conf và sau đó, ghi đè lên tập tin .htaccess của bạn mà nằm thư mục gốc của dự án của bạn không có trong thư mục ứng dụng với mã sau ..

RewriteEngine on 
RewriteCond $1 !^(index\.php|public|\.txt) 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?$1 
+0

Nó làm việc cho tôi như một sự quyến rũ! Cảm ơn! – JunaidKirkire

+0

bạn được chào đón nhiều nhất –

+0

Tôi đã ném nhiều blog và đăng bài tìm kiếm câu trả lời này và bạn là người duy nhất có câu trả lời đúng cho tôi cũng như làm cho nó rất rõ ràng về những gì để làm. Cảm ơn bạn rất nhiều! –

3

Hãy chắc chắn rằng trong tập tin application/config/config.php bạn này được thiết lập như sau:

$config['index_page'] = ''; 

Cũng làm điều này:

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond $1 !^CI/(index\.php|public|images|robots\.txt|css) 
    RewriteRule ^CI/(.*)$ CI/index.php/$1 [L] 
</IfModule> 

Thông thường bạn không đặt CI trong thư mục riêng của mình và đưa applicationsystem trong thư mục gốc.

+0

Đã làm ở trên nhưng vẫn không hoạt động. Có một số nơi khác cũng cần phải được cấu hình? – JunaidKirkire

+0

Cảm ơn khó hiểu cho lời khuyên. Tôi đánh giá cao nó. – JunaidKirkire

3

Kiểm tra cấu hình Apache của bạn để nó cho phép ghi đè. Nếu AllowOverride được đặt thành None, ghi đè sẽ không hoạt động cho bạn.

Thêm phần sau đây để httpd.conf (KHÔNG .htaccess của bạn) bạn nên khắc phục vấn đề của bạn

<Directory "/"> 
    AllowOverride All 
</Directory> 

Hãy cho tôi biết nếu nó vẫn không làm việc.

+0

Hãy sửa tôi nếu tôi sai nhưng không nên là httpd.conf? Ngoài ra tập tin httpd.conf của tôi còn trống. – JunaidKirkire

+0

Cảm ơn bạn đã dành thời gian trả lời câu hỏi của tôi. Tôi đánh giá cao nó. – JunaidKirkire

+0

Xin lỗi, lỗi của tôi ... đó là httpd.conf! Tôi đã trả lời câu trả lời của mình. Tôi hy vọng giải pháp này sẽ giúp. – ashiina

1

Sử dụng các bước sau,
1. Tạo tệp .htaccess trong thư mục gốc tài liệu [myroot_folder/.htaccess].
2.mở file config trong application/config/config.php và làm như sau

$config['index_page'] = ''; 

loại bỏ index.php từ url cơ sở của bạn
nếu nó là $config['base_url']= 'http://localhost/myroot_folder/index.php';
thay đổi nó để $config['base_url']= 'http://localhost/myroot_folder/';

Bây giờ mở file .htaccess và thêm dòng sau mã khối

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

Nếu bạn chưa từng làm việc tất cả nhưng mà bạn đã làm như vậy, hãy thử này:

Thay đổi AllowOverride None để AllowOverride All trong file máy chủ ảo trong /etc/apache2/sites-available/default

Details here

1

Công trình này hoạt động. Mặc dù, hãy chắc chắn rằng bạn mod_rewrite được kích hoạt,

  1. Tìm file httpd.conf dưới C:\wamp\bin\apache\apache2.4.9\conf thư mục bên trong thư mục cài đặt của Apache.
  2. Tìm dòng sau #LoadModule rewrite_module modules/mod_rewrite.so trong tệp httpd.conf.Bạn có thể thực hiện việc này dễ dàng bằng cách tìm kiếm từ khóa “mod_rewrite”.
  3. Xóa # ở đầu dòng, # đại diện cho dòng đó được nhận xét.
  4. Sau đó, khởi động lại máy chủ apache.
  5. Bạn có thể xem bây giờ mod_rewrite trong phần Mô-đun được tải trong khi đang thực hiện phpinfo().
0
1) make .htaccess file and put this code 

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

2) change 

$config['index_page'] = ''; 
remove index.php present in config.php file 

3) rewrite on from your server 
Các vấn đề liên quan