<p><font size="1">Hi,<br /><br />Configuring Apache is a real pain job and not so much documented. However I run with the same configuration as you do VW's TinyHttp and Apache 2.061 on a low cost VPN offering sharing many things through Apache.<br /><br />It might not be perfect but&nbsp;here you go for my httpd.conf.&nbsp; Don't forget to write ALL the file libraries to your public directory respecting the file structure.<br /><br />Rgrds,</font></p><p><font size="1"></font></p><p><font size="1">@+Maarten,</font></p><p><font size="1"><br />===============================================<br /></font></p><p><font size="1">&lt;VirtualHost 193.34.17.215:80&gt; </font></p><p><font size="1">ServerName mydomain.com</font></p><p><font size="1">ServerAlias www.mydomain.com</font></p><p><font size="1">RewriteEngine On</font></p><p><font size="1">RewriteRule ^/$ /index [R]</font></p><p><font size="1"># DocumentRoot /home/maarten/public_html</font></p><p><font size="1"># only allow Seaside rewrite rule to fire, when request doesn't match an existing file</font></p><p><font size="1"># RewriteCond /home/maarten/public_html/%{REQUEST_FILENAME} !-f</font></p><p><font size="1"># if no file was found, proxy the request to Seaside</font></p><p><font size="1"># RewriteRule ^/(.*)$ http://localhost:8888/index/ [P,L]</font></p><p><font size="1"># Set up general proxy properties</font></p><p><font size="1">ProxyRequests Off</font></p><p><font size="1">ProxyPreserveHost On</font></p><p><font size="1">&lt;Proxy *&gt;</font></p><p><font size="1">Order deny,allow</font></p><p><font size="1">Allow from none</font></p><p><font size="1">&lt;/Proxy&gt;</font></p><p><font size="1"># Set up main application URL</font></p><p><font size="1">&lt;Location /index&gt;</font></p><p><font size="1">Order deny,allow</font></p><p><font size="1">Allow from all</font></p><p><font size="1"># Proxy all requests to /home down to the actual host running Seaside</font></p><p><font size="1"></font></p><p><font size="1">ProxyPass http://193.34.17.215:8888/index</font></p><p><font size="1">ProxyPassReverse http://193.34.17.215:8888/index</font></p><p><font size="1"></font></p><p><font size="1">&lt;/Location&gt;</font></p><p><font size="1"># Additional aliases to serve files normally served by Seaside;</font></p><p><font size="1"># this is a simple optimization to reduce load on the app server</font></p><p><font size="1"># by letting Apache do what it does best, serve static files;</font></p><p><font size="1"># normally in development these directories are served by Seaside</font></p><p><font size="1"># to keep development environment simpler</font></p><p><font size="1">Alias /files /home/maarten/public_html/files</font></p><p><font size="1">Alias /images /home/maarten/public_html/images</font></p><p><font size="1"># Alias /css /home/maarten/public_html/css</font></p><p><font size="1">&lt;Directory /home/maarten/public_html&gt;</font></p><p><font size="1">&lt;Limit GET&gt;</font></p><p><font size="1">Order allow,deny</font></p><p><font size="1">Allow from all</font></p><p><font size="1">&lt;/Limit&gt;</font></p><p><font size="1">&lt;/Directory&gt;</font><font size="2"><p><br /><br /><br /></p></font></p><blockquote style="padding-left: 5px; margin-left: 5px; border-left: #ff0000 2px solid">&gt; Message du 24/05/08 20:26<br />&gt; De : &quot;Leandro Perez&quot; <br />&gt; A : &quot;Seaside - general discussion&quot; <br />&gt; Copie &agrave; : <br />&gt; Objet : [Seaside] Seaside and Apache, httpd.conf issue<br />&gt; <br />&gt; Hello list<br />&gt; <br />&gt; I'm trying to make Seaside work behind Apache. I just want to try it out, it's not for production, so I'll be running the Seaside server in the same machine that Apache.<br />&gt; <br />&gt; I've allready installed Apache and it's up and running on port 80. Requests to <a href="http://localhost/" target="_blank">http://localhost</a> work just fine<br />&gt; <br />&gt; For the Seaside part, I'm running a TinyHttp server on port 7777. The seaside apps are running ok, i.e. <a href="http://localhost:7777/seaside/go" target="_blank">http://localhost:7777/seaside/go</a> works well<br />&gt; I'm using VWnc and Seaside 2.8. (ForWebToolkit)<br />&gt; <br />&gt; After many alternatives, this is my actual virtual host configuration for Apache (httpd.conf):<br />&gt; <br />&gt; <p style="margin-left: 40px">NameVirtualHost *:80<br />&gt; <br />&gt; <br />&gt; &nbsp;&nbsp;&nbsp; ServerName localhost<br />&gt; &nbsp;&nbsp;&nbsp; RewriteEngine On<br />&gt; &nbsp;&nbsp;&nbsp; ProxyVia Block<br />&gt; &nbsp;&nbsp;&nbsp; ProxyPreserveHost On<br />&gt; &nbsp;&nbsp;&nbsp; RewriteRule ^/(seaside/go/.*)$ <a href="http://localhost:7777/$1" target="_blank">http://localhost:7777/$1</a> [P,L,NS]<br />&gt; <br />&gt; </p><br />&gt; The problem I have is, if I access <a href="http://localhost/seaside/go" target="_blank">http://localhost/seaside/go</a> (accessing via apache) an Exception is Thrown in smalltalk. So it looks like Apache is redirecting the requests to the seaside server but,&nbsp; It looks like a file is being requested instead of the actual request.<br />&gt; I'm missing something in the httpd.conf, I have no idea of what it could be..<br />&gt; Any hints?<br />&gt; I've read the post in Ramon Leon's blog (<a href="http://onsmalltalk.com/programming/smalltalk/running-seaside-apache-and-iis-on-windowsxp/" target="_blank">http://onsmalltalk.com/programming/smalltalk/running-seaside-apache-and-iis-on-windowsxp/</a>) and in Boris Popov's blog (<a href="http://leftshore.wordpress.com/2006/10/27/hint-setting-up-apache-proxy-for-your-seaside-host/" target="_blank">http://leftshore.wordpress.com/2006/10/27/hint-setting-up-apache-proxy-for-your-seaside-host/</a>) on this subject, also a few posts on the mailing list. But is too late and I can't find the answer.<br />&gt; <br />&gt; Anyone?<br />&gt; Thanks a lot :) ! <br />&gt; ps: Here is part of the stack trace.<br />&gt; <br />&gt; <p style="margin-left: 40px">Unhandled exception: ERROR_FILE_NOT_FOUND (&quot;c:\Archivos de programa\Cincom\vw7.6nc\web\examples\seasidego&quot;)<br />&gt; FileErrorHolder class(OSErrorHolder class)&gt;&gt;reportProceedingOn:<br />&gt; FileErrorHolder(OSErrorHolder)&gt;&gt;reportErrorProceeding<br />&gt; optimized [] in OSErrorHolder class&gt;&gt;initializeErrorActions<br />&gt; SystemError&gt;&gt;handleErrorFor:<br />&gt; NTFSFilename(Filename)&gt;&gt;isDirectory<br />&gt; VisualWave.WebSiteFile&gt;&gt;canServeFile<br />&gt; optimized [] in VisualWave.WebSiteFile&gt;&gt;handleFileRequest<br />&gt; SignalHandler&gt;&gt;handleDo:<br />&gt; SignalHandler&gt;&gt;handleDo:<br />&gt; HandlerList&gt;&gt;handleDo:<br />&gt; VisualWave.WebSiteFile&gt;&gt;handleFileRequest<br />&gt; VisualWave.WebSiteFile&gt;&gt;doGet<br />&gt; VisualWave.WebSiteFile(VisualWave.SingleThreadModelServlet)&gt;&gt;service:response:<br />&gt; VisualWave.ServletHandler&gt;&gt;basicEvaluate<br />&gt; optimized [] in VisualWave.WWHandler&gt;&gt;evaluate<br />&gt; BlockClosure&gt;&gt;on:do:<br />&gt; VisualWave.ServletHandler(VisualWave.WWHandler)&gt;&gt;evaluate<br />&gt; VisualWave.ServletHandler&gt;&gt;sendEntityOver:<br />&gt; VisualWave.ServletHandler(VisualWave.WWHandler)&gt;&gt;sendHTTPOver:forServer:forRequest:<br />&gt; optimized [] in VisualWave.WebRequest&gt;&gt;answerWith:<br />&gt; BlockClosure&gt;&gt;on:do:<br />&gt; VisualWave.WebRequest&gt;&gt;answerWith:<br />&gt; VisualWave.HttpWebRequestService(VisualWave.WebRequestService)&gt;&gt;privateDispatchRequest:<br />&gt; VisualWave.HttpWebRequestService(VisualWave.WebRequestService)&gt;&gt;dispatchRequest:<br />&gt; VisualWave.HttpWebRequestService(VisualWave.WebRequestService)&gt;&gt;privateServe:<br />&gt; optimized [] in VisualWave.WebRequestService&gt;&gt;serveMarshaller:<br />&gt; BlockClosure&gt;&gt;on:do:<br />&gt; VisualWave.HttpWebRequestService(VisualWave.WebRequestService)&gt;&gt;serveMarshaller:<br />&gt; VisualWave.WaveMarshaler&gt;&gt;handleIncomingMessageOn:<br />&gt; optimized [] in [] in VisualWave.WaveTransport&gt;&gt;handlingIncomingMessage<br />&gt; BlockClosure&gt;&gt;ensure:<br />&gt; optimized [] in VisualWave.WaveTransport&gt;&gt;handlingIncomingMessage<br />&gt; BlockClosure&gt;&gt;on:do:<br />&gt; VisualWave.WaveTransport&gt;&gt;handlingIncomingMessage<br />&gt; VisualWave.WaveTransport&gt;&gt;serverProcessBody<br />&gt; optimized [] in Opentalk.Transport&gt;&gt;startServerProcess<br />&gt; BlockClosure&gt;&gt;on:do:<br />&gt; optimized [] in Process class&gt;&gt;forBlock:priority:<br />&gt; <br />&gt; ----------------------------------------------------------------------<br />&gt; FileErrorHolder class(OSErrorHolder class)&gt;&gt;reportProceedingOn:<br />&gt; Receiver:<br />&gt; &nbsp;&nbsp;&nbsp; a FileErrorHolder class<br />&gt; Instance Variables:<br />&gt; &nbsp;&nbsp;&nbsp; superclass = OSErrorHolder<br />&gt; &nbsp;&nbsp;&nbsp; methodDict = a MethodDictionary[3]<br />&gt; &nbsp;&nbsp;&nbsp; format = 16386<br />&gt; &nbsp;&nbsp;&nbsp; subclasses = nil<br />&gt; &nbsp;&nbsp;&nbsp; instanceVariables = an Array[1]<br />&gt; &nbsp;&nbsp;&nbsp; organization = ('accessing' #errorString #filename #filename:)<br />&gt; <br />&gt; &nbsp;&nbsp;&nbsp; name = #FileErrorHolder<br />&gt; &nbsp;&nbsp;&nbsp; classPool = a NameSpaceOfClass[0]<br />&gt; &nbsp;&nbsp;&nbsp; environment = a NameSpace[104]<br />&gt; Arguments:<br />&gt; &nbsp;&nbsp;&nbsp; anErrorHolder = a FileErrorHolder(Error: ERROR_FILE_NOT_FOUND)<br />&gt; Temporaries:<br />&gt; &nbsp;&nbsp;&nbsp; errorSignal = OSErrorHolder nonexistentSignal<br />&gt; Context PC = 31<br />&gt; </p><br />&gt; <br />&gt;<br />&gt; [ (pas de nom de fichier) (0.2 Ko) ]</blockquote>