2009-03-20 35 views
6

Vì vậy, đây là những gì tôi đang cố gắng làm. Tôi có một khuôn khổ đơn giản và tôi đang sử dụng mod viết lại để viết lại các url để họ trỏ đến các tập tin chính xác. Tôi có một thư mục quá trình nằm bên trong thư mục web (thư mục web là nơi tất cả các tập tin trang web thực tế như hình ảnh, css, vv)..htaccess chuyển hướng nếu tệp không tồn tại

Điều này làm việc tuyệt vời nhưng những gì tôi đang cố gắng làm bây giờ là có tệp default.php để xử lý biểu mẫu. Tệp hoạt động tuyệt vời nếu tôi trỏ biểu mẫu tới đó nhưng tôi muốn có thể trỏ biểu mẫu đó tới tệp thích hợp và nếu tệp không có ở đó thì tệp đó sử dụng default.php

Biểu mẫu được tạo bởi lớp và hành động được thiết lập để đi đến process/{ID OF THE FORM} .php Ý tưởng là bất cứ ai cũng có thể tạo một form bằng cách sử dụng class và nếu họ không cần làm gì đặc biệt, file default.php sẽ xử lý hình thức.

Tôi nhận ra rằng tôi chỉ có thể đặt lớp biểu mẫu để luôn sử dụng tệp default.php và sau đó trên tệp default.php tôi có thể kiểm tra xem tệp có thoát đúng hay không. Nếu có, sau đó sử dụng tập tin đó, nếu không thì tiếp tục xử lý các hình thức nhưng tôi vẫn tò mò muốn biết nếu có điều gì như thế này sẽ làm việc trên mod rewrite:

RewriteRule ^process/([^/]*) /web/process/$1 
RewriteCond %{DOCUMENT_ROOT}/web/process/$1 !-f 
RewriteCond %{DOCUMENT_ROOT}/web/process/$1 !-d 
RewriteRule ^process/([^/]*) /web/process/default.php [L] 
+0

Tôi đã [trả lời] (http://stackoverflow.com/questions/470880/rewriterule-checking-file-in-rewriten-file-path-exists/471994#471994) một [câu hỏi] rất giống nhau (http : //stackoverflow.com/questions/470880/rewriterule-checking-file-in-rewriten-file-path-exists). –

Trả lời

2

Thông thường bạn nên có các cuộc gọi của bạn RewriteCond trước RewriteRule của bạn. Quy tắc kích hoạt nếu các Conds được đáp ứng.

+0

Có, nhưng làm thế nào tôi có thể viết lại quy trình/tên tệp thành web/process/filename và sau đó nếu web/process/filename không tồn tại, hãy truy cập web/process/default? –

+0

Có phải các tình huống làm việc cho bạn trong thử nghiệm không? Nó apperas rằng logic của bạn cho trường hợp mặc định là chính xác, nhưng nguyên tắc đầu tiên có thể được thực hiện mỗi lần bất kể. –

14

Quy tắc này một mình nên làm điều đó:

RewriteCond %{DOCUMENT_ROOT}web/$0 !-f 
RewriteRule ^process/[^/]+$ web/process/default.php [L] 

Nếu đường dẫn yêu cầu không thể được ánh xạ tới một tập tin hiện có, nó nên được viết lại để các tập tin mặc định.

+2

+1 Điều này có vẻ như nó sẽ hoạt động và gọn gàng và gọn gàng. –

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