[Zope] Looping URL's
Tino Wildenhain
tino at wildenhain.de
Tue Oct 12 14:53:12 EDT 2004
Am Di, den 12.10.2004 schrieb Edward Pollard um 20:01:
> We've been having a continual problem using Zope to serve as a
> campus-wide CMS. Non technical people are plaguing the server with
> malformed references, creating looping URLs that cause our search
> engine to fall over dead. I presume you all know what I'm talking
> about... the a/b/a/b/a/b URL's.
>
> We've focused on user-training, but we really need to find a way to
> make the server more bulletproof. I'm considering throwing a call into
> the template that compares the request URL with the absolute_url and
> redirects/logs when a discrepancy is found.
>
> Does anyone have any comment on this approach, or a better
> recommendation?
I'd parse and correct on upload. Just derive a product
from ZPT and use something like that to correct links:
import re
a=re.compile(r"<a .*?href=\"(.*?)\".*?>(.*?)</a>",
re.DOTALL |re.IGNORECASE |re.MULTILINE)
a.findall(self.document_src())
should give you a list with tupes
where first element is the href argument
and the second element is whatever is inside
the <a>...</a>
You should check if href starts with a
schema (http: https: mailto: ..)
or with /
every other URL is either bad or even misleading.
You could check via self.restrictedTraverse(href),
and if you get the object, use
"/"+object.absolute_url(1) to get the right URL.
in most cases, a silent replace should do.
Maybe this is something you can use to start with.
Regards
Tino
More information about the Zope
mailing list