Due to the effort of setting up delegation, deciding which HTTP requests should be forwarded to Delivery Server is a simple matter of performing some URL rewrites.
As we have decided to use a mature Web Server, there are best practice ways to achieve this. In IIS6, HeliconTech (Visit HeliconTech website) created a very useful ISAPI filter which ports the widely adopted Apache mod_rewrite (visit Apache mod_rewrite website) functionality. For both of these, the same rewrite rules can be used. The following provides a couple of typical examples:
# Default landing page redirect RewriteRule ^/$ /cps/rde/xchg/<project>/<xsl_stylesheet>/index.htm [L] # Rewrite to delegate all *.html or *.htm HTTP requests to Delivery Server RewriteRule ^/?.*/(.+.html?)$ /cps/rde/xchg/<project>/<xsl_stylesheet>/$1 [L] # Rewrite to delegate all *.xml HTTP requests to Delivery Server RewriteRule ^/?.*/(.+.xml)$ /cps/rde/xchg/<project>/<xsl_stylesheet>/$1 [L]
Those of you who are well versed in regular expressions will see that the last two rules could be combined but I tend to leave them separate to aid readability.
The beauty of using regular expressions in this way is that you can actually create useful SEO benefits to your site also. Take for example the following rule:
RewriteRule ^/?.*/([0-9a-zA-Z_]+)$ /cps/rde/xchg/<project>/<xsl_stylesheet>/$1.htm [L]
This rule maps an URL with many apparent subdirectories to the Delivery Server file.
This means that you can publish a page with a “virtual” path within the Management Server which appears to a browser (and search engines) as something like the following:
http://<host>/this/is/a/descriptive/directory/structure/page.htm and yet this maps to: /cps/rde/xchg/<project>/<xsl_stylesheet>/page.htm
Some restrictions & tricks for IIS7
Being a Microsoft product, IIS7 has some quirks with regards to the rewriting (of course), which I explained in a previous post here.
Sharing the required tasks between their appropriate applications gives you a more stable and reliable system with an even better performance. All you have to do is let:
This approach has led to many successful installations where sites could additionally be optimised for SEO and page load by using compression techniques and the way a web server actually serves HTTP requests.
This article is based on the blog post here of Danny Baggs. Danny has a strong developer based background and is working for Open Text.
Although this should give you a fair bit of guidance on how to set up your web server environments to get a high performance solution there are always questions remaining. Feel free to share those questions in the comments below and let us know what you think.
Hey Mr. and Mrs. Reader! What are your questions?
Great post, Markus (and Danny). We’ve ended up using a dynament to do our Friendly/SEO URL’ing in our LiveServer projects like this:
RewriteRule ^/(.*) /cps/rde/xchg/bizcom/hs.xsl/redirectHandler.xml?path=$1 [PT,L]
The redirect handler can pull it’s data from an XML document published from the CMS or from Verity attributes on each piece of content.
Also, other architectural configs, we’ve outlined in our Delivery Server Production Buildout Whitepaper
What you missed in this article:
1. Never install with the bundled installer. Always install as WAR and deploy it to an own tomcat.
2. Always run the LS/DS in its own Container. It has a strange/greedy kind of heap management.
3. In high performance environment use an additional reverse caching proxy (i.e. varnish) if you don’t have a cdn.
@Christian
You can get the same without using something stated above. We tend to just publish a text-file containing Apache-Configs like:
Redirect /
onto the server and Include them in the vhost-config.
Regarding your questions:
We built an simple MS/DS framework to construct simple forms (incl. client and serverside validation). The success action then can be any dynament code like sending an email, storing form data to an database or calling a webservice. We recommend to build complexer forms using the spring framework.
Regarding the search I really encourage everybody to get rid of this verity crap and use either an complete external searchengine (like google mini) or connect the engine of your choice (endeca, sol’r, …) via serchengine indexing tasks or the new OpenAPI based connector.
Good points Daniel.
I have been told that OpenText is aware of the strengths and weaknesses of Verity and looking into this to make things better in the future.
And I agree on that note that unless OpenText doesn’t come up with a better product than Verity or a cleaner way to configure and set it up you are better off with the Google Search Appliance or another search engine. For the clients: Ask your RedDot Partner what they recommend.