Make sure /files does actually exist, otherwise Apache will be applying the rewrite rule to whatever your defined ErrorDocument is, if any.

Check the documentation on httpd.apache.org for RewriteLog and RewriteLogLevel - they can be VERY helpful. Make sure you remove those directives when you are done, you do not want to be logging rewrites on a live server.

On 30/04/2011 18:41, Arunkumar Janarthanan wrote:
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 <http://www.xyz.com/files> that goes to www.abc.com/page-not-found <http://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 <lee...@gmail.com <mailto:lee...@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
    <lee...@gmail.com <mailto:lee...@gmail.com>

    > <mailto:lee...@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 <lee...@gmail.com
    <mailto:lee...@gmail.com>

    >> <mailto:lee...@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

    >>

    >>

    >



Reply via email to