2010-01-19 44 views
7

Trên trang web PHP của tôi, tôi muốn đôi khi hiển thị một trang bảo trì cho người dùng. Tôi biết tôi có thể làm điều này trong PHP rất dễ dàng nhưng tôi thà sử dụng một tập tin htaccess, tôi nghĩ hiệu suất có thể tốt hơn theo cách này. Vì vậy, những gì tôi muốn biết là tôi có thể sửa đổi một tập tin htaccess trong PHP? Nếu có thể, tôi cũng đang nghĩ đến,Viết một tập tin .htaccess trong PHP?

1 - Phải có tệp và 1 sẽ có mã bên dưới và cái kia sẽ không, cả hai tệp sẽ chứa nội dung htaccess khác của tôi. Sau đó, php có thể đổi tên 2 tệp này khi tôi chạy một tập lệnh quản trị để chuyển đổi tệp nào được hiển thị, bằng cách thay đổi tên của nó thành .htaccess

2- Đọc nội dung của tệp .htaccess hiện tại và PHỤ LỤC mã bên dưới, sau đó cũng có thể xóa nó khỏi tệp nếu cần.

RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_URI} !^/maintenance\.php$ 
RewriteRule ^(.*)$ http://domain.com/maintenance.html [R=307,L] 

Mục tiêu của tôi là tạo một tập lệnh quản trị có thể xử lý 1 lần để thay đổi trang bảo trì hiển thị hoặc không hiển thị.

Hãy bất kỳ mẫu mã hoặc lời khuyên về cách để làm điều này hoặc nếu nó thậm chí có thể sửa đổi một tập tin .htaccess từ PHP

+0

http://us2.php.net/manual-lookup.php?pattern=write+file fwrite là lần thứ 4 nhấn – hobodave

+1

@the xuống cử tri, rõ ràng là tôi không biết làm thế nào để làm điều này hoặc tôi sẽ không "lãng phí thời gian của tôi bằng văn bản này" vì vậy cảm ơn vì không có gì =) – JasonDavis

Trả lời

12

Bạn có thể sử dụng fopen để mở và fwrite để viết thư cho một tập tin. Bạn sẽ muốn mở nó trong chế độ phụ thêm, đọc hướng dẫn để xem nó áp dụng.

Điều đó nói rằng, điều này nghe có vẻ giống như một cách kỳ lạ để làm việc.

tôi thực hiện những gì bạn đang cố gắng làm chỉ sử dụng viết lại quy tắc kiểm tra sự hiện diện của file:

RewriteCond %{DOCUMENT_ROOT}/maintenance.html -f 
RewriteCond %{SCRIPT_FILENAME} !maintenance.html 
RewriteRule ^.*$ /maintenance.html [L] 

Nếu file maintenance.html là hiện nay, sau đó trang web của tôi đang được bảo trì.

+0

Cảm ơn, tôi không chắc đây có phải là loại tệp được bảo vệ hay không, tôi không thực sự có nhiều kinh nghiệm làm việc với tệp. – JasonDavis

+0

Tôi đồng ý với giải pháp ở đây. Tôi biết các chương trình như Cpanel và Wordpress sẽ ghi vào/autogenerate .htaccess code. Nhưng nó có vẻ giống như một cái búa mười tấn cho thứ gì đó dễ dàng thực hiện theo cách khác. –

9

Tôi thực sự khuyên bạn nên không phải viết .htaccess từ PHP. Bạn sẽ phải cung cấp cho người dùng máy chủ web (người truyền thống có đặc quyền rất thấp) viết quyền truy cập vào .htaccess; tất cả những gì bạn cần là một kịch bản có thể khai thác và kẻ tấn công có thể cấu hình lại máy chủ của bạn một cách hiệu quả.

Đối với chế độ bảo trì trong ứng dụng, hãy chuyển sang chế độ tự giữ PHP trả lại trang bảo trì. Khi bạn đang thực hiện bảo trì trên chính ứng dụng, thật dễ dàng để tạm thời đổi tên một tệp thành vị trí .htaccess's để cho phép ghi đè bảo trì.

0
RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_URI} !^/maintenance\.php$ 
RewriteRule ^(.*)$ http://domain.com/maintenance.html [R=307,L] 
Các vấn đề liên quan