2011-03-01 28 views
27

Tôi gặp sự cố khi xóa index.php khỏi URL của tôi trong Codeigniter. Tôi đã thực hiện một vài trang web với CodeIgniter 1.7 và mã .htaccess tôi đã sử dụng không hoạt động trong 2.Xóa index.php Từ URL - Codeigniter 2

Tôi đã cố gắng sử dụng

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/

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

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

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

<IfModule mod_rewrite.c> 
RewriteEngine on 
RewriteCond $1 !^(index\.php|images|robots\.txt|css) 
RewriteRule ^(.*)$ ./index.php/$1 [L] 

</IfModule> 

Tôi đã cũng đã thử nó mà không cần RewriteBase/in.

Tôi đã thay đổi $ config ['uri_protocol'] thành REQUEST_URI và QUERY_STRING và không có gì.

Tôi đã đặt $ config ['index_page'] = "";

Cấu trúc tệp là 192.168.0.130/(site)/ do đó, tệp phải quay lại gốc của máy chủ và không thể tìm thấy tệp index.php.

Tất cả các bộ điều khiển tôi đã thực hiện có thể đạt được bằng cách đặt 192.168.0.130/(site)/index.php/testcontroller

Cảm ơn bạn.

Xin lỗi nếu điều này đã được yêu cầu trước đó - tôi đã xem và thử những gì tôi có thể thấy.

Edit:

Tôi cũng nên thêm rằng tôi đã thay đổi thư mục mặc định là

ứng dụng

CI-2.0

index.php

và thay đổi đường dẫn trong index.php là chính xác.

+0

Bạn có bất kỳ tệp htaccess nào trong thư mục chính không? – timwebdev

+0

Có một tệp htaccess. Nó chỉ có một dòng trong đó và nó cho một dự án khác - tôi chỉ cố gắng bình luận nó ra nhưng nó không làm gì cả. – Paul

+0

Btw: Hệ thống và ứng dụng RewriteConds phải bắt đầu bằng/SUBFOLDER/ – timwebdev

Trả lời

22

Hãy thử khối mã đầu tiên bạn đã đăng, nhưng thay vì /index.php, hãy thử sử dụng /(site)/index.php (thay thế obv (trang) bằng bất kỳ thư mục trang web nào của bạn được đặt tên).

+0

Tôi vừa thử nó và nó không hoạt động. Điều này sẽ trở thành một cái gì đó ngu ngốc tôi đã bỏ lỡ ... Cảm ơn bạn đã giúp đỡ. – Paul

+0

Tôi chỉ cần di chuyển nó đến máy chủ địa phương của tôi và nó hoạt động với các thiết lập .htaccess vì vậy nó phải là một vấn đề máy chủ. – Paul

+2

Điều này có vẻ giống như một câu hỏi ngớ ngẩn, nhưng máy chủ bạn đã thử nghiệm ban đầu đã bật mod_rewrite chưa? – Jazzerus

14

này đã làm việc cho tôi:

  1. Tạo tập tin của bạn htaccess
  2. Set $ ​​config [ 'index_page'] để một sản phẩm nào (config.php)
  3. chuỗi Set $ ​​config [ 'uri_protocol'] = 'REQUEST_URI'; (config.php)

Đây là tập tin htaccess của tôi:

Options -Indexes 
Options +FollowSymLinks 

RewriteEngine On 
RewriteBase/

#Removes access to the system folder by users. 
#Additionally this will allow you to create a System.php controller, 

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

#When your application folder isn't in the system folder 

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] 

# 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 

Nguồn:

http://taggedzi.com/articles/display/codeigniter-2-htaccess-and-friendly-urls

+0

Cảm ơn bạn. Tôi đã thực sự làm cho nó hoạt động tốt với cùng một cấu hình mà tôi có trên máy chủ cục bộ và máy chủ sản xuất vì vậy nó phải có vấn đề với máy chủ dev mà chúng ta có. – Paul

+0

Cảm ơn Robin, đề xuất của bạn đã hoạt động tốt. – ericbae

+0

Xin lỗi các bạn, tôi đã thử mọi mã htaccess, tôi đào Google 5 ngày và thử mọi mẫu mã htaccess nhưng mọi thứ đều thất bại. Nhưng, cuối cùng mã này đang hoạt động cho tôi sau khi thêm 'RewriteBase/my/base/site/url' vào mã .htaccess. Trước khi thêm dòng trên, khi tôi cố gắng gọi bộ điều khiển CI của tôi, nó đang được chuyển hướng trên trang whost cục bộ. Vì vậy, tôi đã thêm mã ở trên là 'RewriteBase' //config.php $ config ['base_url'] \t = ''; $ config ['index_page'] = ''; $ config ['uri_protocol'] \t = 'REQUEST_URI'; anh ấy .. :) Coooollll !!!!! Robin Morgan và Cảm ơn bạn rất nhiều .. :) –

2

Sau khi làm theo tất cả các hướng dẫn từ những người khác và từ CodeIgnitor URL documnetation này, đừng quên khởi động lại máy chủ. Tôi chỉ đơn giản là quên làm điều đó và tiếp tục thử tất cả các giải pháp khác.

+0

lưu ý: một số máy chủ web không yêu cầu bạn phải khởi động lại máy chủ sau khi cập nhật tệp .htaccess. Ví dụ: hostgator.com không yêu cầu khởi động lại: http://support.hostgator.com/articles/specialized-help/technical/apache-htaccess/must-i-restart-apache-after-changing-a-htaccess -file –

3
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 

RewriteCond %{REQUEST_FILENAME} !-d 

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

này nhiều chỉ là cần thiết trong thư mục gốc thêm video này vào .htaccess

+0

điều này đã được các htaccess chỉ có làm việc trên cả hai địa phương của tôi (xamp trên wamp) và máy chủ lưu trữ (đèn) – dsdsdsdsd

1

tôi về vấn đề này trong 2 ngày .. Cố gắng mọi thứ có thể. Tôi vừa mới xuất hiện mà bạn cần như sau:

LOẠI:

sudo nano /etc/apache2/sites-available/default 

Và thay đổi AllowOverride None để AllowOverride All - Điều này sẽ cung cấp cho truy cập vào file .htaccess bạn

<Directory /var/www/> 
      Options Indexes FollowSymLinks MultiViews 
      AllowOverride All 
      Order allow,deny 
      allow from all 
      # Uncomment this directive is you want to see apache2's 
      # default start page (in /apache2-default) when you go to/
      #RedirectMatch ^/$ /apache2-default/ 
</Directory> 

Và cũng cho phép viết lại mod trên Apache:

http://stackoverflow.com/questions/3131236/how-do-you-enable-mod-rewrite 

Hy vọng điều này sẽ giúp, Mário

1

Bạn chỉ cần thêm mã bên dưới vào .htacess.

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

1) Tạo tập tin .htaccess trong thư mục gốc của web site

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

2) Chỉnh sửa ứng dụng tập tin/config/config.php trong thư mục Application

$config['base_url'] = 'http://localhost/projectName'; 

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

tôi hy vọng nó sẽ làm việc cho bạn

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