[Zope] ZCatalog raises index out of range exception error
Aleksander Salwa
ololo@zeus.polsl.gliwice.pl
Wed, 20 Dec 2000 01:00:01 +0100 (CET)
On Tue, 19 Dec 2000, Marcin Kasperski wrote:
> Partial solution: at something like 2:00 AM delete your SiteRoot rule,
> reindex with ZCatalog and create this rule again. Searching works
> (although I needed to edit the paths found a bit in the form responsilbe
> for search results presentation).
You don't need to delete your SiteRoot. You can use one of techniques
described in SiteRoot docs to suppress it within particular request.
I use trick with phantom folder, call it 'Z'.
So my AccessRule looks like:
Is there a path, and does it start with 'Z'?
<dtml-let stack="REQUEST['TraversalRequestNameStack']">
<dtml-if "stack and stack[-1]=='Z'">
Get rid of 'Z': <dtml-call "stack.pop()">
Put it back logically: <dtml-call "REQUEST.setVirtualRoot('Z')">
<dtml-else>
Is the first-level domain 'hotsite.com'? Ignore sub-domains and port
number.
<dtml-if "_.string.split(_.string.lower(_.string.split(HTTP_HOST,
':')[0]), '.')[-2:]==_.string.split('www.hotsite.com','.')[-2:]">
Add physical root:
<dtml-call "REQUEST['TraversalRequestNameStack'].append('hotsite')">
<dtml-call "REQUEST.set('SiteRootPATH','/')">
</dtml-if>
</dtml-if>
</dtml-let>
In my SiteRoot, I have all properties left blank.
When I access my server using URL like www.myserver.com/Z/something, then
SiteRoot is turned off.
With this solution, your site may be still accessible to customers, while
you are working without SiteRoot (i.e. cataloging objects).
ololo@zeus.polsl.gliwice.pl
/--------------------------------------\
| `long long long' is too long for GCC |
\--------------------------------------/