2010-01-15 18 views
7

Im cài đặt phpancake, có một thư mục có shema như thế nàyQuy tắc Ghi đè này có nghĩa là gì?

application/ 
install/ 
library/ 
public/ 
sql_schema/ 
install.html 
install.php 

không quy tắc này có ý nghĩa gì?

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [NC,L] 
RewriteRule ^.*$ /vote/public/index.php [NC,L] 

Trả lời

11

Ghi đè có hai phần. Phần đầu tiên xác định rằng nếu tên tệp được yêu cầu là tệp thông thường có kích thước lớn hơn 0 (-s), liên kết tượng trưng (-l) hoặc thư mục (-d), viết lại thành hư không, ví dụ: không hành động. [NC,L] có nghĩa là quy tắc không phân biệt chữ hoa chữ thường và quy tắc cuối cùng phù hợp với các điều kiện này.

Tất cả các yêu cầu khác được chuyển tiếp đến /vote/public/index.php.

Mục đích của việc viết lại này là một tệp hiện có, thực tế có thể được tìm nạp từ máy chủ mà không bị nhiễu. Nếu không có quy tắc đầu tiên, mọi yêu cầu tệp (tệp css và js, hình ảnh, v.v.) sẽ chuyển đến index.php sẽ làm mọi thứ trở nên tồi tệ.

Thông thường, điều này được viết trong một tuyên bố. Bạn có thể từ chối các điều kiện và sau đó, các statemens [OR] cũng có thể được lấy ra:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-s 
RewriteCond %{REQUEST_FILENAME} !-l 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^.*$ /vote/public/index.php [NC,L] 

Điều này tương đương với tuyên bố ban đầu.

+0

@Tatu Ulmanen: bạn có thể giải thích ý nghĩa của 'RewriteCond% {REQUEST_FILENAME} -f' không? nó chỉ là "kích thước" mà các tùy chọn '-s' và' -f' khác nhau? Và cũng có những gì sẽ là tập tin thường xuyên (không nhị phân?)? –

0

Đó là viết lại chủ yếu là tiêu chuẩn mà kiểm tra nếu tập tin yêu cầu (hoặc thư mục hoặc liên kết tượng trưng) tồn tại trên đĩa, trong trường hợp các tập tin/thư mục/etc. nên được sử dụng.

Tất cả các trận đấu khác nên đến /votes/public/index.php

+0

từ câu trả lời của @Tatu Ulmanen, bạn có thể giải thích ý nghĩa của 'RewriteCond% {REQUEST_FILENAME} -f' không? nó chỉ là "kích thước" mà các tùy chọn '-s' và' -f' khác nhau? Và cũng có những gì sẽ là tập tin thường xuyên (không nhị phân?)? –

0

Nguyên tắc đầu tiên sẽ đi qua tất cả các yêu cầu có thể được ánh xạ vào một tập tin thường có kích thước lớn hơn không (-s), một biểu tượng liên kết (-l) hoặc một thư mục (-d). Mỗi yêu cầu khác được tìm nạp theo quy tắc thứ hai và được viết lại thành /vote/public/index.php.