2009-08-12 30 views
5

Sau khi tải dự án Kohana của tôi lên máy chủ Godaddy của tôi, tôi nhận thấy tệp .htaccess chuẩn của tôi không hoạt động đủ để cung cấp URL sạch. Sau khi một số hướng dẫn, tôi đã kết thúc với các nguyên tắc sau:

RewriteRule .* index.php?kohana_uri=$0 [PT,L] 

này có đẹp-URL của tôi hoạt động trở lại, nhưng hôm nay tôi phát hiện ra rằng nó có thể được phá vỡ nội bộ công cụ tìm kiếm của tôi, mà còn sử dụng GET-style biến:

/search?terms=php 

Các giá trị không được tìm thấy bởi tập lệnh. Họ đang trên máy chủ phát triển của tôi mà không có RewriteRule sửa đổi, nhưng không phải trên máy chủ Godaddy mà không sử dụng RewriteRule.

Tôi có đúng khi giả định rằng quy tắc đang vi phạm bất kỳ khả năng đọc tập lệnh nào từ $ _GET và nếu có thì tôi có thể khắc phục điều này như thế nào?

Trả lời

8

Có thể sử dụng QSA trong RewriteRules của bạn, như thế này:

RewriteRule .* index.php?kohana_uri=$0 [PT,QSA,L] 

Xem manual of mod_rewrite (trích dẫn):

'qsappend | QSA' (chuỗi truy vấn nối)

Cờ này buộc công cụ viết lại thêm phần chuỗi truy vấn của chuỗi thay thế vào chuỗi hiện tại , thay vì thay thế nó. Sử dụng điều này khi bạn muốn thêm nhiều dữ liệu vào chuỗi truy vấn thông qua quy tắc viết lại .

Có thể giúp (không kiểm tra trong trường hợp cụ thể của bạn, nhưng tôi nhớ đã sử dụng này một số thời gian trước đây, đối với một số loại vấn đề như thế này)

+0

Đã hiệu quả. Tôi sẽ chờ đợi và để cho người khác tham gia (vì tôi biết rất ít về .htaccess, và như vậy nếu đây là giải pháp tốt nhất) trước khi tôi chấp nhận. Cảm ơn bạn! – Sampson

+0

Không có vấn đề :-) bạn được chào đón! –

1

Tôi nghĩ bạn có thể thêm: RewriteCond $1 !^(search) hoặc biến thể như vậy.

0

Nếu bạn muốn sử dụng tiêu chuẩn thực hiện và không có chuỗi truy vấn bạn cần phải làm theo các bước này và nó sẽ hoạt động giống như localhost Và bạn không cần thay đổi các quy tắc viết lại.

Đến quản lý tập tin tài khoản GoDaddy của bạn -> thư mục webroot -> Tạo php5.ini nếu nó không tồn tại và địa điểm sau dòng: cgi.fix_pathinfo = 1

Bây giờ bạn cần phải khởi động lại quá trình Web của bạn :

1.) Đăng nhập vào Trình quản lý tài khoản của bạn. 2.) Nhấp vào Web Hosting. 3.) Bên cạnh tài khoản lưu trữ bạn muốn sử dụng, hãy nhấp vào Khởi chạy. 4.) Trong phần Thống kê & Màn hình, hãy nhấp vào Quy trình Hệ thống. 5.) Trong danh sách bên trái, hãy nhấp vào quy trình bạn muốn xem hoặc nhấp vào Tất cả các quy trình để xem tất cả các quá trình cùng một lúc. 6.) Để kết thúc quá trình, hãy nhấp vào nút kết thúc tương ứng trên thanh công cụ.

Bây giờ bạn có thể sử dụng URI_PROTOCOL làm Tự động.

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