2009-08-26 112 views
5

Tôi đã cố gắng cài đặt .htaccess này để thông báo cho người dùng của tôi về bảo trì trang web. Có vẻ như [L] đầu tiên không hoạt động và viết lại thứ hai đang làm mọi thứ.Quy tắc ghi lại cho trang "xuống trang"

Các bạn thực hiện các thông báo bảo trì trang web bằng cách nào?

RewriteEngine on 

RewriteRule ^s/down$ index.html [L] 
RewriteRule ^(.*)$ http://metaward.com/s/down [R=302,L] 

Trả lời

5

Điều này dường như làm việc (nhưng tôi phải thiết lập các mã trạng thái trong PHP)

RewriteEngine on 

RewriteCond %{REQUEST_URI} !^/static/.*$ 
RewriteCond %{REQUEST_URI} !^/media/.*$ 
RewriteRule .* down.php [L] 

và trong down.php

<?php 
header('HTTP/1.1 503 Service Temporarily Unavailable',true,503); 
?> 

Bất kỳ vấn đề với điều này? Mối quan tâm chính của tôi là những gì người dùng nhìn thấy (đó là lý do tại sao tôi giữ nội dung tĩnh) và những công cụ tìm kiếm nào nhìn thấy (mã trạng thái 503).

+0

Đây là những gì tôi đã giải quyết, nhưng 'RewriteCond's là không cần thiết. Trong trường hợp này 'RewriteRule! ^/(?: static | media)/down.php [L]' sẽ thực hiện. – Walf

1

Các RewriteRules Tôi đang sử dụng trên trang web của tôi khi tôi muốn đóng cửa để bảo trì là những người:

RewriteCond %{REMOTE_ADDR} !=MY_IP_ADDRESS 
RewriteRule ^$ /down.html [L] 
RewriteCond %{REMOTE_ADDR} !=MY_IP_ADDRESS 
RewriteRule [^/down.html$] /down.html [L] 

(Có lẽ không hoàn toàn "tối ưu hóa", tôi nên nói .. Nhưng nó hoạt động (hoặc có vẻ như vậy) mỗi lần tôi sử dụng chúng)

Mọi thứ nhưng down.html được chuyển hướng đến down.html - ngoại trừ tôi, tất nhiên: tôi muốn có thể kiểm tra việc bảo trì các hoạt động tôi đang làm, rõ ràng là

ANd khi tôi kết thúc, tôi chỉ bình luận bốn dòng đó.

+1

Điều kiện địa chỉ IP: gọn gàng. –

+0

sẽ không làm cho công cụ tìm kiếm lập chỉ mục trang của bạn như thể nó đã được hoàn hảo nhưng phục vụ trang xuống kỳ lạ của bạn? –

+0

@Paul: Tôi phải thừa nhận rằng tôi không biết chắc chắn; Tôi đã đặt trong down.html như một biện pháp bảo mật, nhưng tôi không chắc một bot sẽ làm gì: Tôi chưa từng thấy nội dung của down.html trang trên google, đó là chắc chắn và tôi chưa bao giờ nhận thấy bất kỳ điều gì "xấu" cho các trang khác ;; nhưng hoạt động bảo trì của tôi rất hiếm, và không bao giờ kéo dài hơn 3 giờ ;; và trang web của tôi không lớn/nổi tiếng, vì vậy không được lập chỉ mục quá thường xuyên ... ;; Tuy nhiên, nếu ai đó nhìn thấy một cách để làm cho điều này tốt hơn, tôi chắc chắn quan tâm (sẽ là tốt đẹp để cung cấp một câu trả lời, và có được một bản thân mình!) ;-) –

6

Bạn không cần chuyển hướng bên ngoài. Chỉ cần gửi 503 status code và tài liệu lỗi của bạn.

RewriteCond %{ENV:REDIRECT_STATUS} !=503 
RewriteRule ^(.*)$ /503.html [R=503,L] 
ErrorDocument 503 /503.html 

Nhưng bạn cần Apache 2.x để sử dụng mã trạng thái khác với cờ R khác với 3xx.

+0

503 sẽ không thực sự khiến trình duyệt chuyển hướng. –

+0

@Paul Tarjan: Tôi chưa bao giờ nói điều đó. Apache 2 vừa mở rộng việc sử dụng cờ 'R' để thiết lập các mã trạng thái. Chỉ các mã trạng thái 3xx mới thực sự gây ra chuyển hướng bên ngoài. – Gumbo

+0

thú vị, vì vậy R không thực sự buộc một chuyển hướng? wow, testing .. –

0

Tôi sử dụng Apache làm proxy cho một ứng dụng ruby ​​trên đường ray.

Điều duy nhất tôi phải làm là thêm

ProxyPass /custom-errors ! 
ErrorDocument 503 /custom-errors/maintenance-message.html 

Để httpd.conf của tôi và chắc chắn rằng: [cài đặt Apache] /htdocs/custom-errors/maintenance-message.html tồn tại.

0

Tôi không thấy bất kỳ ai sử dụng tiêu đề Thử lại sau. Tôi đã đọc (nhưng không có liên kết nữa khi tôi đọc nó một lúc trước) mà bạn nên sử dụng một 503 trong combo với một Retry-Sau n (n = số giây để thử lại trong; 3600 là một giờ) tiêu đề. Nếu bạn sử dụng 503 và Retry-After trong combo, đặc biệt là trên robots.txt/sitemap của bạn nó không nên lộn xộn với các liên kết và xếp hạng trang cho SEO nếu bạn không để nó như thế trong một thời gian dài.

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