From: Lucien Gentis Date: Sat, 6 Sep 2014 15:08:40 +0000 (+0000) Subject: XML update. X-Git-Tag: 2.4.11~298 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a67927e939d9af42c7744858bf2b1f635cbb853f;p=apache XML update. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1622871 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/docs/manual/rewrite/advanced.xml.fr b/docs/manual/rewrite/advanced.xml.fr index 137a63bffb..640bc515d8 100644 --- a/docs/manual/rewrite/advanced.xml.fr +++ b/docs/manual/rewrite/advanced.xml.fr @@ -1,9 +1,9 @@ - + - -
-
Description :
- -
-

Lorsque nous créons une page web complexe, ne serait-il pas - souhaitable que le navigateur web actualise automatiquement la - page chaque fois que nous en sauvegardons une nouvelle version - à partir de notre éditeur ? Impossible ?

-
- -
Solution :
- -
-

Non ! Nous allons pour cela combiner la fonctionnalité MIME - multipart, la fonctionnalité NPH du serveur web et la - puissance de mod_rewrite pour la manipulation - d'URLs. Tout d'abord, nous définissons une nouvelle - fonctionnalité pour les URLs : l'ajout de - :refresh à toute URL fait que la 'page' est - actualisée chaque fois que la ressource est mise à jour dans - le système de fichiers.

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

Nous appelons maintenant cette URL

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

ce qui entraîne en interne l'invocation de l'URL

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

Il ne reste plus qu'à écrire le script NPH-CGI. Bien que l'on - écrive habituellement dans ces cas "laissé à la charge du - lecteur à titre d'exercice", ;-) je vous l'offre, aussi.

- - -#!/sw/bin/perl -## -## nph-refresh -- script NPH/CGI pour l'actualisation automatique de -## pages -## Copyright (c) 1997 Ralf S. Engelschall, All Rights Reserved. -## -$| = 1; - -# éclate la variable QUERY_STRING -@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## - -
-
- - -
Répertoires Home structurés @@ -478,8 +316,7 @@ RewriteRule ^/~(([a-z])[a-z0-9]+)(.*) /home/$2mod_expires pour contourner ce problème. Il est cependant bien plus commode de servir un contenu dynamique, et - de le personnaliser en fonction de l'heure du jour. - + de le personnaliser en fonction de l'heure du jour.