如何使用.htaccess 301重定向和更改URL?

I just discovered that I have some duplicate pages that I need to remove but some pages that should not exist are indexed and generating small amounts of traffic. I want to redirect those urls to the original ones.

http://www.example.com/buy-something.php

to

http://www.example.com/something.php

I basically need to remove the "buy-" in the urls and make sure the page is redirected to the proper page. Here is what I have so far:

#301 Redirect buy- to none
RewriteRule ^([a-zA-Z\.]+).php$  /buy-$1.php  [L,R=301]

But this does nothing to the pages that should be redirected and adds a loop of buy-buy-buy-buy-buy-buy- to other pages and causes them to time out. I have tried a few other variations but to no prevail.

Your help is greatly appreciated.

You mixed up the syntax, right now you are redirecting any .php to /buy-.php, since you want it the other way arround try:

RedirectRule ^buy-([a-zA-Z\.]+).php$  /$1.php  [L,R=301]

That should take any buy-*.php domains and redirect them to *.php with the Code 301.

Source: http://httpd.apache.org/docs/current/mod/mod_rewrite.html

Your rewrite rule is incorrect. It does the opposite to what you intended. Try this:

#301 Redirect buy- to none
RewriteRule ^buy-(.*).php$  /$1.php  [L,R=301]