svn commit: r1934614 - httpd/httpd/trunk/docs/manual/images

[email protected]
Newsgroups gmane.comp.apache.cvs
Message-ID <177973584798.3406415.416638157137489196@svn03-he-fi>
Author: rbowen
Date: Mon May 25 19:04:07 2026
New Revision: 1934614

Log:
docs: Add SVG source for rewrite_process_uri, regenerate PNG

Recreate the ruleset processing flowchart as editable SVG. Adds
explicit 'no more rules' exit path and names RewriteCond in the
conditions diamond for clarity. Regenerate PNG from SVG source.

Added:
   httpd/httpd/trunk/docs/manual/images/rewrite_process_uri.svg
Modified:
   httpd/httpd/trunk/docs/manual/images/rewrite_process_uri.png

Modified: httpd/httpd/trunk/docs/manual/images/rewrite_process_uri.png
==============================================================================
Binary file (source and/or target). No diff available.

Added: httpd/httpd/trunk/docs/manual/images/rewrite_process_uri.svg
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ httpd/httpd/trunk/docs/manual/images/rewrite_process_uri.svg	Mon May 25 19:04:07 2026	(r1934614)
@@ -0,0 +1,134 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 472 560" width="472" height="560">
+  <defs>
+    <marker id="arrowhead" markerWidth="9" markerHeight="6" refX="8" refY="3" orient="auto">
+      <polygon points="0 0, 9 3, 0 6" fill="#333"/>
+    </marker>
+    <style>
+      text { font-family: Arial, Helvetica, sans-serif; font-size: 10px; fill: #333; }
+      .title { font-size: 11px; font-weight: bold; }
+      .label { font-size: 9px; fill: #555; }
+      rect.process { fill: #cce5ff; stroke: #004085; stroke-width: 1.3; rx: 4; ry: 4; }
+      polygon.decision { fill: #fff3cd; stroke: #856404; stroke-width: 1.3; }
+      ellipse.terminal { fill: #d4edda; stroke: #155724; stroke-width: 1.3; }
+      ellipse.start { fill: #f8d7da; stroke: #721c24; stroke-width: 1.3; }
+      line, path { stroke: #333; stroke-width: 1.2; fill: none; marker-end: url(#arrowhead); }
+    </style>
+  </defs>
+
+  <!-- Start: Request -->
+  <ellipse class="start" cx="236" cy="20" rx="45" ry="15"/>
+  <text x="236" y="24" text-anchor="middle">Request</text>
+
+  <line x1="236" y1="35" x2="236" y2="55"/>
+
+  <!-- Context decision -->
+  <polygon class="decision" points="236,55 330,78 236,101 142,78"/>
+  <text x="236" y="78" text-anchor="middle" font-size="9">Context?</text>
+
+  <!-- Per-server: left -->
+  <path d="M 142,78 C 100,78 70,78 70,103"/>
+  <text x="95" y="72" class="label">per-server</text>
+
+  <rect class="process" x="15" y="103" width="110" height="28"/>
+  <text x="70" y="115" text-anchor="middle" font-size="9">Strip prefix to</text>
+  <text x="70" y="126" text-anchor="middle" font-size="9">get URL-path</text>
+
+  <path d="M 70,131 C 70,150 180,155 210,163"/>
+
+  <!-- Per-directory: right -->
+  <path d="M 330,78 C 370,78 400,78 400,103"/>
+  <text x="350" y="72" class="label">per-directory</text>
+
+  <rect class="process" x="345" y="103" width="115" height="28"/>
+  <text x="402" y="115" text-anchor="middle" font-size="9">Strip per-dir prefix</text>
+  <text x="402" y="126" text-anchor="middle" font-size="9">to get remainder</text>
+
+  <path d="M 400,131 C 400,150 280,155 260,163"/>
+
+  <!-- Merge -->
+  <line x1="236" y1="163" x2="236" y2="178"/>
+
+  <!-- Find next RewriteRule -->
+  <rect class="process" x="166" y="178" width="140" height="26"/>
+  <text x="236" y="195" text-anchor="middle">Find next RewriteRule</text>
+
+  <line x1="236" y1="204" x2="236" y2="222"/>
+
+  <!-- More rules? -->
+  <polygon class="decision" points="236,222 316,240 236,258 156,240"/>
+  <text x="236" y="240" text-anchor="middle" font-size="9">More rules?</text>
+
+  <!-- No more rules → exit to "URL changed?" -->
+  <line x1="156" y1="240" x2="70" y2="240"/>
+  <text x="115" y="234" class="label">No</text>
+  <path d="M 70,240 C 50,240 40,250 40,440 C 40,460 80,460 156,460"/>
+  <text x="28" y="350" class="label" transform="rotate(90,28,350)">all rules done</text>
+
+  <!-- Yes → Pattern matches? -->
+  <line x1="236" y1="258" x2="236" y2="278"/>
+  <text x="244" y="270" class="label">Yes</text>
+
+  <!-- URL matches Pattern? -->
+  <polygon class="decision" points="236,278 326,298 236,318 146,298"/>
+  <text x="236" y="296" text-anchor="middle" font-size="9">URL matches</text>
+  <text x="236" y="307" text-anchor="middle" font-size="9">Pattern?</text>
+
+  <!-- No match → back to find next rule -->
+  <path d="M 326,298 C 380,298 390,240 390,204 C 390,190 340,191 306,191"/>
+  <text x="365" y="291" class="label">No</text>
+
+  <!-- Yes → Conditions -->
+  <line x1="236" y1="318" x2="236" y2="340"/>
+  <text x="244" y="332" class="label">Yes</text>
+
+  <!-- Evaluate RewriteCond(s) -->
+  <polygon class="decision" points="236,340 326,360 236,380 146,360"/>
+  <text x="236" y="357" text-anchor="middle" font-size="9">RewriteCond(s)</text>
+  <text x="236" y="368" text-anchor="middle" font-size="9">match?</text>
+
+  <!-- Conditions fail → back to next rule -->
+  <path d="M 146,360 C 100,360 80,320 80,270 C 80,220 120,191 166,191"/>
+  <text x="93" y="350" class="label">No</text>
+
+  <!-- Conditions pass → substitute -->
+  <line x1="236" y1="380" x2="236" y2="400"/>
+  <text x="244" y="393" class="label">Yes</text>
+
+  <!-- Substitute -->
+  <rect class="process" x="156" y="400" width="160" height="26"/>
+  <text x="236" y="417" text-anchor="middle">Substitute URL / filename</text>
+
+  <!-- After substitute → back to next rule -->
+  <path d="M 316,413 C 420,413 430,300 430,240 C 430,200 380,191 306,191"/>
+  <text x="435" y="310" class="label" transform="rotate(90,435,310)">next rule</text>
+
+  <!-- Also can exit via [L] flag -->
+  <line x1="236" y1="426" x2="236" y2="447"/>
+  <text x="244" y="440" class="label">[L] flag</text>
+
+  <!-- URL changed? decision -->
+  <polygon class="decision" points="236,447 316,465 236,483 156,465"/>
+  <text x="236" y="463" text-anchor="middle" font-size="9">URL</text>
+  <text x="236" y="474" text-anchor="middle" font-size="9">changed?</text>
+
+  <!-- No change → pass through to next phase -->
+  <line x1="316" y1="465" x2="390" y2="465"/>
+  <text x="345" y="459" class="label">No</text>
+  <ellipse class="terminal" cx="420" cy="465" rx="45" ry="14"/>
+  <text x="420" y="469" text-anchor="middle" font-size="9">Next phase</text>
+
+  <!-- Yes → redirect or restart -->
+  <line x1="236" y1="483" x2="236" y2="510"/>
+  <text x="244" y="498" class="label">Yes</text>
+
+  <!-- Per-server → redirect; per-dir → restart -->
+  <ellipse class="terminal" cx="150" cy="530" rx="55" ry="14"/>
+  <text x="150" y="534" text-anchor="middle" font-size="9">Redirect (per-server)</text>
+
+  <ellipse class="terminal" cx="330" cy="530" rx="60" ry="14"/>
+  <text x="330" y="534" text-anchor="middle" font-size="9">Restart (per-directory)</text>
+
+  <path d="M 220,510 C 190,510 170,520 150,516" style="marker-end: url(#arrowhead)"/>
+  <path d="M 252,510 C 280,510 310,520 330,516" style="marker-end: url(#arrowhead)"/>
+</svg>
\ No newline at end of file
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.