You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@httpd.apache.org by Rob Wilkerson <r....@gmail.com> on 2006/09/26 18:26:08 UTC

[users@httpd] mod_rewrite %{REQUEST_URI} Question

I have an application in which nearly all requests are routed through
a "handler page" which then renders the requested page.   For example,
a request for http://www.mydomain.com/bin/resumes/myresume.doc would
be routed through http://www.mydomain.com/landingpage.php.

I have a RewriteRule that handles this request by forwarding the
requested URI in the query string (because I couldn't get it to work
without the query string approach).  The RewriteRule looks like this:

RewriteRule ^/(.*) /landingpage.php?requesturi=%{REQUEST_URI}	[QSA,PT]

This works fine except when I have a document (these documents are
uploaded by users so I have little control over them) called "My
Resume & Cover Letter.doc", for example.  The "&", having special
meaning in the query string, destroys the redirection capability.

Is there any way around this?

Any thoughts or suggestions would be greatly appreciated.

Thanks.

-- 

Rob Wilkerson

---------------------------------------------------------------------
The official User-To-User support forum of the Apache HTTP Server Project.
See <URL:http://httpd.apache.org/userslist.html> for more info.
To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
   "   from the digest: users-digest-unsubscribe@httpd.apache.org
For additional commands, e-mail: users-help@httpd.apache.org


Re: [users@httpd] mod_rewrite %{REQUEST_URI} Question

Posted by Rob Wilkerson <r....@gmail.com>.
On 9/27/06, Rob Wilkerson <r....@gmail.com> wrote:
> On 9/26/06, Bob Ionescu <bo...@googlemail.com> wrote:
> > Rob Wilkerson wrote:
> > > RewriteRule ^/(.*) /landingpage.php?requesturi=%{REQUEST_URI}    [QSA,PT]
> > >
> > > This works fine except when I have a document (these documents are
> > > uploaded by users so I have little control over them) called "My
> > > Resume & Cover Letter.doc", for example.  The "&", having special
> > > meaning in the query string, destroys the redirection capability.
> > >
> > > Is there any way around this?
> >
> > Yes,
> > RewriteRule ^/  /landingpage.php [PT]
> >
> > and in /landingpage.php
> >
> > $requesturi=$_SERVER['REQUEST_URI'];
>
> Okay, that seems to work in PHP, but now I have to get it working in
> ColdFusion (sort of a side project of the main project).  The problem
> appears to be on their end and I've posted to their mailing list, but
> I'd be interested in any thoughts this community may have as well:
>
> ColdFusion does not appear to pass the REQUEST_URI variable in its CGI
> scope as expected.  The value there appears to be the landing page URI
> rather than the URI originally requested.
>
> Are there any other server variables that might include this
> information?  Has anyone ever run into this issue in a ColdFusion
> environment before?
>
> Thanks.

I never got this working in ColdFusion, but I finally figured out
another way to do it.  I hadn't realized that mod_rewrite provided me
with the ability to change the environment myself.  This RewriteRule
appears to have given me exactly what I need:

RewriteRule ^/(.*)  /my/landingpage.cfm [E=MY_REQUEST_URI:%{REQUEST_URI},QSA,PT]

Now I can access #CGI.MY_REQUEST_URI# to retrieve the original URI
without worrying about what ColdFusion provides.  More testing will be
done, but it looks pretty solid as far as I can tell.

Thanks again.

---------------------------------------------------------------------
The official User-To-User support forum of the Apache HTTP Server Project.
See <URL:http://httpd.apache.org/userslist.html> for more info.
To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
   "   from the digest: users-digest-unsubscribe@httpd.apache.org
For additional commands, e-mail: users-help@httpd.apache.org


Re: [users@httpd] mod_rewrite %{REQUEST_URI} Question

Posted by Rob Wilkerson <r....@gmail.com>.
On 9/26/06, Bob Ionescu <bo...@googlemail.com> wrote:
> Rob Wilkerson wrote:
> > RewriteRule ^/(.*) /landingpage.php?requesturi=%{REQUEST_URI}    [QSA,PT]
> >
> > This works fine except when I have a document (these documents are
> > uploaded by users so I have little control over them) called "My
> > Resume & Cover Letter.doc", for example.  The "&", having special
> > meaning in the query string, destroys the redirection capability.
> >
> > Is there any way around this?
>
> Yes,
> RewriteRule ^/  /landingpage.php [PT]
>
> and in /landingpage.php
>
> $requesturi=$_SERVER['REQUEST_URI'];

Okay, that seems to work in PHP, but now I have to get it working in
ColdFusion (sort of a side project of the main project).  The problem
appears to be on their end and I've posted to their mailing list, but
I'd be interested in any thoughts this community may have as well:

ColdFusion does not appear to pass the REQUEST_URI variable in its CGI
scope as expected.  The value there appears to be the landing page URI
rather than the URI originally requested.

Are there any other server variables that might include this
information?  Has anyone ever run into this issue in a ColdFusion
environment before?

Thanks.

---------------------------------------------------------------------
The official User-To-User support forum of the Apache HTTP Server Project.
See <URL:http://httpd.apache.org/userslist.html> for more info.
To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
   "   from the digest: users-digest-unsubscribe@httpd.apache.org
For additional commands, e-mail: users-help@httpd.apache.org


Re: [users@httpd] mod_rewrite %{REQUEST_URI} Question

Posted by Bob Ionescu <bo...@googlemail.com>.
Rob Wilkerson wrote:
> RewriteRule ^/(.*) /landingpage.php?requesturi=%{REQUEST_URI}    [QSA,PT]
> 
> This works fine except when I have a document (these documents are
> uploaded by users so I have little control over them) called "My
> Resume & Cover Letter.doc", for example.  The "&", having special
> meaning in the query string, destroys the redirection capability.
> 
> Is there any way around this?

Yes,
RewriteRule ^/  /landingpage.php [PT]

and in /landingpage.php

$requesturi=$_SERVER['REQUEST_URI'];


---------------------------------------------------------------------
The official User-To-User support forum of the Apache HTTP Server Project.
See <URL:http://httpd.apache.org/userslist.html> for more info.
To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
   "   from the digest: users-digest-unsubscribe@httpd.apache.org
For additional commands, e-mail: users-help@httpd.apache.org