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 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@xxxxxxxxx>
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:
> <mailto:leegee@xxxxxxxxx>>
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@xxxxxxxxx
>> <mailto:leegee@xxxxxxxxx>>
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
>>
>>
>
|