IDependOn-Set: 1
IDependOn-Set: 152
IDependOn-Set: 158
IDependOn-Set: 2
IDependOn-Set: 201
IDependOn-Set: 7
LastModifiedSecs: 936118655
Parent: 7
SequenceNumber: 3
Title: Servlets forbidden when using mod_rewrite?
Part: 0
Author-Set: jon@working-dogs.com
HideAttributions: 1
LastModifiedSecs: 926543709
Type: monospaced
Lines: 68
----------
From: Frank Flannery <fflanner@yahoo.com>
To: java-apache-users@list.working-dogs.com
Subject: servlets forbidden when using rewrite module?
Date: Mon, May 10, 1999, 8:10 PM

I've gotten JServ 1.0b4 working just fine on my linux
redhat 5.2 installation.  I then compiled in the
mod_rewrite package, which also worked.  

My problem is, as soon as I turn the rewrite engine on
(RewriteEngine on) servlets immmediately stop working,
saying that acces to servlet is forbidden.

The servlet engine definitely seems to be running,
since when I access a jsp, it says "access to
/servlets/org.gjt.jsp.JSPServlet is forbidden" 

This is with no RewriteRules, or anything.  simply the
rewrite engine being on.

When I turn it off, servlets work again.

----------
From: Ed Korthof <ed@cloudfactory.org>
To: Java Apache Users <java-apache-users@list.working-dogs.com>
Subject: Re: servlets forbidden when using rewrite module?
Date: Wed, May 12, 1999, 2:05 PM

Hiya --

So it is indeed the case that stat was leaving r->finfo in an invalid
state; when I described this & suggested a patch, one of the people in the
Apache Group decided it wasn't a good idea to trust the value in r->finfo
after a failed stat call, and applied the following (related) patch: 

-----
  ===================================================================
  RCS file: /home/cvs/apache-1.3/src/main/http_request.c,v
  retrieving revision 1.147
  retrieving revision 1.148
  diff -u -r1.147 -r1.148
  --- http_request.c    1999/04/20 23:38:44     1.147
  +++ http_request.c    1999/05/12 16:50:42     1.148
  @@ -265,8 +265,12 @@
               *cp = '\0';
               return OK;
           }
  +     /* must set this to zero, some stat()s may have corrupted it
  +      * even if they returned an error.
  +      */
  +     r->finfo.st_mode = 0;
   #if defined(ENOENT) && defined(ENOTDIR)
  -        else if (errno == ENOENT || errno == ENOTDIR) {
  +        if (errno == ENOENT || errno == ENOTDIR) {
               last_cp = cp;
   
               while (--cp > path && *cp != '/')
-----

This will be in the next version of Apache; please apply it rather than
the previously posted patch, and if you encounter any problems, drop me a
note.

thanks for the bug report!

Ed

EndPart: 0
Part: 1
Author-Set: tjm@usa.net
LastModifiedSecs: 936118655
Type: monospaced
Lines: 8
I encountered this too and after scouring the rewrite_mod documentation, found a workaround!

RewriteEngine On
# whoops! with RewriteEngine On, JServ doesn't find about about servlets
# until we poke a hole like so (repeat for all zones):
RewriteRule ^/servlets/.* - [passthrough]
# redirect root to some servlet (requires mod_proxy)
RewriteRule ^/$ /servlets/SomeServlet [proxy]
EndPart: 1
