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 <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> <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> <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 > >> > >> > > > > >