From f5be3c50672c384cfc08ba466e7e388d129d9f12 Mon Sep 17 00:00:00 2001 From: Rich Bowen Date: Wed, 3 Sep 2014 16:16:41 +0000 Subject: [PATCH] Merges some corrections from trunk git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1622292 13f79535-47bb-0310-9956-ffa450edef68 --- docs/manual/rewrite/advanced.xml | 161 +------------------------------ 1 file changed, 1 insertion(+), 160 deletions(-) diff --git a/docs/manual/rewrite/advanced.xml b/docs/manual/rewrite/advanced.xml index 99c986a858..f94421589c 100644 --- a/docs/manual/rewrite/advanced.xml +++ b/docs/manual/rewrite/advanced.xml @@ -49,7 +49,7 @@ configuration.
- URL-based sharding accross multiple backends + URL-based sharding across multiple backends
Description:
@@ -196,165 +196,6 @@ featureful than anything you can cobble together using mod_rewrite.

-
- - Document With Autorefresh - - - -
-
Description:
- -
-

Wouldn't it be nice, while creating a complex web page, if - the web browser would automatically refresh the page every - time we save a new version from within our editor? - Impossible?

-
- -
Solution:
- -
-

No! We just combine the MIME multipart feature, the - web server NPH feature, and the URL manipulation power of - mod_rewrite. First, we establish a new - URL feature: Adding just :refresh to any - URL causes the 'page' to be refreshed every time it is - updated on the filesystem.

- - -RewriteRule ^(/[uge]/[^/]+/?.*):refresh /internal/cgi/apache/nph-refresh?f=$1 - - -

Now when we reference the URL

- - -/u/foo/bar/page.html:refresh - - -

this leads to the internal invocation of the URL

- - -/internal/cgi/apache/nph-refresh?f=/u/foo/bar/page.html - - -

The only missing part is the NPH-CGI script. Although - one would usually say "left as an exercise to the reader" - ;-) I will provide this, too.

- - -#!/sw/bin/perl -## -## nph-refresh -- NPH/CGI script for auto refreshing pages -## Copyright (c) 1997 Ralf S. Engelschall, All Rights Reserved. -## -$| = 1; - -# split the QUERY_STRING variable -@pairs = split( /&/, $ENV{'QUERY_STRING'} ); -foreach $pair (@pairs) { - ( $name, $value ) = split( /=/, $pair ); - $name =~ tr/A-Z/a-z/; - $name = 'QS_' . $name; - $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; - eval "\$$name = \"$value\""; -} -$QS_s = 1 if ( $QS_s eq '' ); -$QS_n = 3600 if ( $QS_n eq '' ); -if ( $QS_f eq '' ) { - print "HTTP/1.0 200 OK\n"; - print "Content-type: text/html\n\n"; - print "<b>ERROR</b>: No file given\n"; - exit(0); -} -if ( !-f $QS_f ) { - print "HTTP/1.0 200 OK\n"; - print "Content-type: text/html\n\n"; - print "<b>ERROR</b>: File $QS_f not found\n"; - exit(0); -} - -sub print_http_headers_multipart_begin { - print "HTTP/1.0 200 OK\n"; - $bound = "ThisRandomString12345"; - print "Content-type: multipart/x-mixed-replace;boundary=$bound\n"; - &print_http_headers_multipart_next; -} - -sub print_http_headers_multipart_next { - print "\n--$bound\n"; -} - -sub print_http_headers_multipart_end { - print "\n--$bound--\n"; -} - -sub displayhtml { - local ($buffer) = @_; - $len = length($buffer); - print "Content-type: text/html\n"; - print "Content-length: $len\n\n"; - print $buffer; -} - -sub readfile { - local ($file) = @_; - local ( *FP, $size, $buffer, $bytes ); - ( $x, $x, $x, $x, $x, $x, $x, $size ) = stat($file); - $size = sprintf( "%d", $size ); - open( FP, "<$file" ); - $bytes = sysread( FP, $buffer, $size ); - close(FP); - return $buffer; -} - -$buffer = &readfile($QS_f); -&print_http_headers_multipart_begin; -&displayhtml($buffer); - -sub mystat { - local ($file) = $_[0]; - local ($time); - - ( $x, $x, $x, $x, $x, $x, $x, $x, $x, $mtime ) = stat($file); - return $mtime; -} - -$mtimeL = &mystat($QS_f); -$mtime = $mtime; -for ( $n = 0 ; $n & lt ; $QS_n ; $n++ ) { - while (1) { - $mtime = &mystat($QS_f); - if ( $mtime ne $mtimeL ) { - $mtimeL = $mtime; - sleep(2); - $buffer = &readfile($QS_f); - &print_http_headers_multipart_next; - &displayhtml($buffer); - sleep(5); - $mtimeL = &mystat($QS_f); - last; - } - sleep($QS_s); - } -} - -&print_http_headers_multipart_end; - -exit(0); - -##EOF## - -
-
- -
-
Structured Userdirs -- 2.40.0