<div>I wanted to know how the Racket web server figures out whether a URL refers to a servlet or not.  In particular, I was curious about how the &quot;servlet-root&quot; path in the configuration table was used (its default is &quot;.&quot;).  The closest thing I could find to documentation was this bullet point in the docs for &quot;web-server@&quot;:</div>

<div><br></div>    Execute servlets in the mapping URLs to the given servlet root directory under htdocs.<div><br></div><div>I&#39;ve read this sentence many times and I still can&#39;t parse it...  Is there a word or two missing or something?</div>

<div><br></div><div>Anyway, after digging through the source code (particularly web-server-unit.rkt), here&#39;s my understanding:  If [host-root]/[file-root]/[servlet-root]/[url-path] refers to an existing file whose extension is &quot;.ss&quot;, &quot;.scm&quot;, &quot;.rkt&quot;, or &quot;.rktd&quot;, then the file is loaded and served as a servlet.  (It&#39;s actually a bit more complicated, since it handles extra path elements after the servlet name.)  For example, if host-root is &quot;.&quot;, file-root is &quot;htdocs&quot;, servlet-root is &quot;servlets&quot;, and url-path is &quot;foo.rkt&quot;, then if &quot;./htdocs/servlets/foo.rkt&quot; exists, it is served as a servlet, otherwise if &quot;./htdocs/foo.rkt&quot; exists, it is served as a file.</div>

<div><br></div><div>Is this right?  Can this be documented more clearly somewhere?  (Or is it already?)</div><div><br></div><div>Anyway, is there a way to customize this (e.g. to be able to map directory URLs to servlets) without having to recreate the entire chain of dispatchers from web-server@ by hand?</div>

<div><br></div><div>--Doug</div><div><br></div>