[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [ic] removing .../cgi-bin/catname/... from URLs


On Wed, 13 Dec 2006, Peter wrote:

I've verified that Catalog definition indeed has the format:

Catalog  mycat  /home/someuser/catalogs/mycat  /cgi-bin/mycat  /

yet IC is still including the .../cgi-bin/mycat/... in the URLs. I
restarted IC just for kicks yet still no luck. Can you suggest a way to
troubleshoot?

I've noticed that the misbehaving store has a CGI_URL defined in the
Prefernces tab of the Admin GUI, but the behaving store does not. Could
this be the cause?

Indirectly, yes.  Look for VendURL and SecureURL in catalog.cfg.

DB,

I need to explain my earlier reply better. What Peter says about VendURL is in general correct. However, when you have any URL prefix aliases defined for the catalog, if a request comes in through one of them, that will override VendURL for all future URLs written by [area] etc. The manual explains this:

http://www.icdevgroup.org/docs/confs/Catalog.html

So my example only makes sense if taken in the context of an Apache setup for making pretty catalog URLs, such as this:

    ScriptAlias /cgi-bin/ /path/to/your/cgi-bin/dir/
    RewriteEngine on
    RewriteRule ^/store/(.*) /cgi-bin/standard/$1 [PT,L]

Then you'd set up interchange.cfg like this:

    Catalog  standard  /path/to/catalogs/standard  /cgi-bin/standard  /store

Thus, users would go to this URL to enter the site:

    http://your.domain/store/

But Interchange would see you coming in through:

    http://your.domain/cgi-bin/standard/

because of the Apache RewriteRule.

The first URL prefix is considered the "main" one, not an alias, and does not take over URL generation as an alias does, so the Catalog definition above doesn't lead to aliases URL generation; it just stays normal.

But in the end it turns out that the /store alias I showed in my example isn't even necessary; Interchange never uses it or needs it to find the catalog, because it's seeing /cgi-bin/standard as the path prefix after URL rewriting.

So, to sum up, I think your problem may be fixed with this Catalog directive:

    Catalog  mycat  /home/someuser/catalogs/mycat  /

assuming you have in Apache something like:

    RewriteRule ^/(.*) /cgi-bin/mycat/$1 [PT,L]

Though to take over the whole URL space like that, you'd need to have some previous RewriteRules that would make exceptions to statically serve images, CSS, JavaScript, robots.txt, favicon.ico, etc. directly from Apache, not passing them to Interchange.

You'll get a lot more wasted requests passed through to Interchange by hostile bots, etc., which wouldn't be if you use a prefix like /store/ or /ic/ or /app/ or something like that. You can still make the home page use the root URL http://your.domain/ with another RewriteRule like:

    RewriteRule ^/(index.html?)?$ /cgi-bin/standard/index [PT,L]

HTH,
Jon

--
Jon Jensen
End Point Corporation
http://www.endpoint.com/
_______________________________________________
interchange-users mailing list
suppressed
http://www.icdevgroup.org/mailman/listinfo/interchange-users


Mail converted by mhonarc 2.6.15
This archive provided courtesy of JSW4.NET, Internet Hosting Services for Small Business.