2013-01-08 36 views
5

tôi đang cố gắng để loại bỏ index.php tạo thành một URL:Làm thế nào để loại bỏ index.php từ URL khung mỏng

này hoạt động

http://server/bw/index.php/test 

này không làm việc

http://server/bw/test 

tôi cố gắng thay đổi .htaccess và xem trên web tôi thấy rằng nó phải như thế này:

RewriteEngine On 
RewriteBase /bw/ 

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

tôi cố gắng chỉnh sửa nó theo cách này:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule^index.php [QSA,L] 

hoặc theo cách này:

RewriteEngine On 

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

hoặc theo cách này:

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

Nhưng khi tôi cố gắng để truy cập vào http://server/bw/test nó nói tôi:

Not Found 

The requested URL /bw/test was not found on this server. 

Apache/2.2.15 (CentOS) Server at server Port 80 

Tôi kiểm tra xem bên trong của tôi httpd.confLoadModule rewrite_module modules/mod_rewrite.so có được bật không. Tôi không biết phải làm gì bây giờ ..

làm cách nào tôi có thể giải quyết? làm ơn giúp tôi!

Trả lời

6

Hãy thử điều này, được sử dụng ví dụ: trong WordPress

RewriteRule . index.php [L] 

hoặc điều này, được sử dụng bởi ví dụ: Lavavel PHP Framework

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

Bạn cũng có thể cân nhắc thêm

RewriteCond %{REQUEST_FILENAME} !-d 

trước RewriteRule cũng loại trừ thư mục hiện có, không chỉ các file đang tồn tại. Nhưng điều đó tùy thuộc vào bạn.

+0

gì để làm .. nó không làm việc .. với các quy tắc cả hai đầu tiên và thứ hai – JackTurky

+0

Nếu bạn đặt những dòng này thành một. tập tin htaccess bạn nên kiểm tra xem bạn có chỉ thị AllowOverride được đặt thành Tất cả hoặc FileInfo trong httpd.conf hoặc cấu hình VirtualHost vì mod_rewrite cần điều này (xem [Tài liệu Apache] (http://httpd.apache.org/docs/current/mod/core.html#allowoverride)) – Dehalion

+0

tôi đã cố gắng đặt AllowOverride thành Tất cả bên trong httpd.conf nhưng khi tôi cố gắng đi đến url mà không có index.php nó tải index.php của thư mục nằm trong thư mục chứa index.php của khung công tác mỏng – JackTurky

0

Đối với tôi, tôi có mọi thứ để làm việc sử dụng dòng này từ Dehalion của câu trả lời:

RewriteRule . index.php [L] 

Vì vậy, các index.php (hoặc bất kỳ xyz.php) tập tin được chưa từng thấy trong các địa chỉ yêu cầu

http://localhost/demo1/mycompany/hello/Jim 

với sự chú ý sau đây:

  1. Bạn đã tuyến đường này định nghĩa:

    $ app-> get ('/ mycompany/hello /: name', doHello);

  2. Phần tử gốc (đối với các tuyến đường/mycompany/..) cũng là tên của tập tin.
    Tức là, tuyến đường tồn tại trong một tệp có tên là "mycompany.php"

Vâng, đó là một chút của một hack ... nhưng kể từ khi tôi tìm apache cấu hình khó hiểu/đáng sợ :) ... Tôi tìm giải pháp này là đủ ổn định để đáp ứng yêu cầu.

0

trong trường hợp của tôi, tôi cập nhật AllowOverride All, sau đó chạy sudo a2enmod rewrite để tránh Internal 500 lỗi rồi khởi động lại Apache service apache2 restart

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