Calling a revServer script from inside a .html page?
Richard Gaskin
ambassador at fourthworld.com
Sat Dec 18 09:59:14 EST 2010
Keith Clarke wrote:
> Pierre, Thanks for the clarification. Not quite the answer I was
> hoping as I want to rev-enable existing auto-generated pages where
> I can't change the page mime-type from html.
That's how just how Apache works with RevServer and AFAIK any other
CGI-like process that you want the server to invoke for further processing.
With mod-rewrite rules in a .htaccess file you can do all sorts of stuff.
RevServer installs require this anyway; it's included by default with
on-rev.com accounts, and to use RevServer on any other server you need
to put those rules into a .htaccess file; without them, Apache would
have no way to know to hand off those page requests to your CGI.
Here's the one I use at livecodejournal.com:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^(.+)\.irv$ /cgi-bin/irv.cgi?%{REQUEST_FILENAME} [L,NC,QSA]
In brief, it says to take any request for a file ending in .irv and hand
it over to /cgi-bin/irv.cgi for further processing before passing the
results back to the requester.
mod_rewrite is very powerful, and well worth the modest amount of time
needed to become familiar with it. Like most Apache modules, it's well
documented all over the web. The Apache docs are a good start:
<http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html>
...and there's a ton of other great examples and tutorials to be found.
One challenge with using .html is that you may want to have some static
pages there, and just replacing ".irv" with ".html" in the rules above
will redirect all .html requests to your CGI, which can eat more
processing time than necessary if you leave it up to your CGI to
determine whether to do further processing or just hand the contents
back to Apache.
That's why most configs specify certain file types for specific
additional processing (e.g., ".php" for PHP, ".asp" for Microsoft's DB
setup, ".irev" for RevServer, etc.).
But if you really want your CGI to process all .html requests, you can
modify the rules above and drop it in a .htaccess file on your server
and you're good to go.
One useful thing to keep in mind is that any mod_rewrite rules in a
.htaccess file affect only the directory that the .htaccess file is in
and any subdirectories within it. So if you wanted to have one folder
that gets preprocessed with a CGI while using other folders for static
pages, just put your .htaccess file in the folder where you want the
pages processed and the others will be left for Apache to handle by itself.
--
Richard Gaskin
Fourth World
LiveCode training and consulting: http://www.fourthworld.com
Webzine for LiveCode developers: http://www.LiveCodeJournal.com
LiveCode Journal blog: http://LiveCodejournal.com/blog.irv
More information about the use-livecode
mailing list