httpd-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Arunkumar Janarthanan <arunkumar.webad...@gmail.com>
Subject Re: [users@httpd] REQUEST_URI multiple wildcard pattern
Date Sat, 30 Apr 2011 16:41:33 GMT
Thank you very much Lee, appreciate your assistance with this issue. However
with the below rule the URI pattern with actual string even is not working.

Like I said when I try with wget www.xyz.com/files that goes to
www.abc.com/page-not-found.

RewriteRule !^/(files|admin|user|product|go)$
http://www.abc.com/page-not-found [R=301,NC,L]

Thanks once again for helping me on this.

On Sat, Apr 30, 2011 at 12:00 PM, Lee <leegee@gmail.com> wrote:

>  Hi Arunkumar
>
> You have a list of URIs to NOT match for redirection, so begin the pattern,
> as you did, with !
>
>     RewriteRule !
>
> You then have a group of top-level directory or files to be ignored, so you
> can anchor at the start of the URI:
>
>     RewriteRule !^/
>
> Then put all your dir/file names in braces, delimited by the OR operator, I
>
>     RewriteRule !^/(this|that)
>
> Then follow with the URI to which everything should be directed that does
> not match:
>
> RewriteRule !^/(this|that) http://your-other-host/page-not-page.
>
> I wasn't quite sure about your spec's use of wildcards, sometimes you have
> them after an /oblique/, sometimes without, sometimes not at all. I assumed
> that was a typo, and that every item should have a wildcard star. If that is
> not the case, please drop me a line off-list.
>
> HTH
> Lee
>
> PS There is a note on wildcards in ! negated patterns, and why to avoid
> them:
>
>
> http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewriterule
>
> Note
> When using the NOT character to negate a pattern, you cannot include
> grouped wildcard parts in that pattern. This is because, when the pattern
> does NOT match (ie, the negation matches), there are no contents for the
> groups. Thus, if negated patterns are used, you cannot use |$N| in the
> substitution string!
>
>
>
> On 30/04/2011 14:05, Arunkumar Janarthanan wrote:
> >
> > Hi Lee,
> >
> > sorry for posting the requirement as it is, this is what the
> > requirement exactly.
> >
> > 1. http://xyz.com/esweep* - no redirection at all (so urls like
> > esweepconfirm/thank-you/ do not redirect) 2. http://xyz.com/user* -
> > no redirection at all 3. http://xyz.com/files/* - no redirection at
> > all 4. http://xyz.com/admin* - no redirection at all 5.
> > http://xyz.com/go - no redirection at all 6. All other - redirect to
> > http://www.abc.com/page-not-found
> >
> > Best Regards, Arun J
> >
> > On Sat, Apr 30, 2011 at 7:44 AM, Lee Goddard <leegee@gmail.com
> > <mailto:leegee@gmail.com> <leegee@gmail.com>> wrote:
> >
> > Hi Arunkumar
> >
> > You wrote,
> >
> >
> > I could use !^/(files|admin|user|product|go), however this would
> > allow all wildcard pattern for the URI string like "user/login" ? or
> > "products/newarrival" ?
> >
> > This is not true. Nothing beginning with the words files, or admin,
> > or user, or product, or go, would match.
> >
> > You do not need to terminate the pattern with a wildcard -- you have
> > a match at the beginning.
> >
> > What is it exactly that you are trying to achieve?
> >
> > Lee
> >
> >
> >
> > On 30/04/2011 12:44, Arunkumar Janarthanan wrote:
> >> Thanks Lee, for your reply.
> >>
> >> I could use !^/(files|admin|user|product|go), however this would
> >> allow all wildcard pattern for the URI string like "user/login" ?
> >> or "products/newarrival" ?
> >>
> >> Is why I tried with (.*) but the wildcard string still not getting
> >> picked up by the rule.
> >>
> >> On Sat, Apr 30, 2011 at 2:22 AM, Lee <leegee@gmail.com
> >> <mailto:leegee@gmail.com> <leegee@gmail.com>> wrote:
> >>
> >>
> >>
> >> On 30/04/2011 05:46, Arunkumar Janarthanan wrote:
> >>> Hi,
> >>
> >>
> >>
> >>>
> >>
> >>
> >>
> >>> I have a request that the site contains specific
> >> URI pattern
> >>
> >> should
> >>
> >>
> >>
> >>> go to another URL while the other URI patterns
> >> goes to 404
> >>
> >> page of
> >>
> >>
> >>
> >>> external site.
> >>
> >>
> >>
> >>>
> >>
> >>
> >>
> >>> Here below the rule I have written, however this
> >> is not
> >>
> >> working for
> >>
> >>
> >>
> >>> wildcard match of the URI pattern.
> >>
> >>
> >>
> >>>
> >>
> >>
> >>
> >>> RewriteCond %{REQUEST_URI}
> >>
> >>
> >>
> >>>
> >> !^/(files(.*)|admin(.*)|user(.*)|product(.*)|go(.*))$
> >>
> >> RewriteRule .*
> >>
> >>
> >>
> >>> http://www.abc.com/page-not-found
> >> [R=301,NC,L]
> >>
> >> RewriteCond %{REQUEST_URI} !^/(files|admin|user|product|go)
> >>
> >> Round brackets are good for grouping OR clauses (produce|admin),
> >> and good for storing back-references (.*). But you are not using
> >> back-references, so you can drop a lot of those brackets. Also, you
> >> can simply your use of the gobble-everything operator (.*) by
> >> putting it at the end - although why would you need it?
> >>
> >> You simply need to match a few phrases at the beginning of the
> >> string.
> >>
> >> So:
> >>
> >> ! If REQUEST_URI does not match ^ from the start / oblique
> >> (files|admin|user|product|go) any of these phrases
> >>
> >> HTH Lee
> >>
> >>
> >
>
>
>

Mime
View raw message