2012-06-18 25 views
6

Tôi có một thư mục có tên "folder1" trong thư mục gốc của tôithư viết lại mod nếu tập tin/thư mục không tìm thấy

www.domain.com/ www.domain.com/folder1

tôi cần để chuyển hướng tất cả các yêu cầu đến www.domain.com mà chuyển thành lỗi 404, thành thư mục1. Cũng giống như vậy:

www.domain.com/a_file.txt

Nếu a_file.txt không tồn tại, hãy tìm trong folder1:

www.domain.com/folder1/a_file. txt

tôi muốn điều này để làm việc tương tự cho các thư mục con, như vậy:

www.domain.com/a_folder (redirect nếu nó không tồn tại trong thư mục gốc)

www.domain.com/folder1/a_folder

Tôi biết tôi nên sử dụng RewriteCond% {REQUEST_FILE}! -f nhưng tôi dường như không thể tìm nó ngoài.

Trả lời

15
RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_URI} !^/folder1/ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule (.*) folder1/$1 [L,R] 
  • Các rewrite-cond đầu tiên đảm bảo bạn không vòng lặp (trong trường hợp tập tin không tồn tại bên trong folder1 hoặc
  • thứ hai kiểm tra mục tiêu đó không phải là một tập tin
  • Thứ ba - đó Đây không phải là thư mục hoặc là
  • Và cuối cùng, hãy ghi lại url L cờ có nghĩa là đây là quy tắc cuối cùng được áp dụng (ngay cả khi có các quy tắc sau), R có nghĩa là chuyển hướng. truy vấn chuỗi truy vấn rs được chuyển đến bản gốc được gửi đến url mới
+0

Chính xác là tôi đang viết ... +1 để tránh và giải thích vòng lặp. – zessx

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