views:

2304

answers:

3

Hi,

I recently purchased a new domain for my WordPress site and I want to redirect anyone who visits using an old domain to the new one. I haven't moved servers, just added a new domain.

For instance, if they went to either of these:

http://www.example.net/some-article/
http://example.net/some-article/

Then I'd like them to be redirected to the appropriate URL:

http://www.example.com/some-article/
http://example.com/some-article/

How would you do this simple .net -> .com redirect with a .htaccess file? Any rule should apply to all URLs under the .net domain.

Thanks in advance.


Edit: I already have the .htaccess file on the server:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

AddHandler php5-script .php
+2  A: 

You need to add commands like this to your .htaccess file:

redirect permanent /some-article/ http://www.example.com/some-article/

Is this a server with mod_rewrite? In this case you could do a generic redirection for all paths:

RewriteEngine On

RewriteRule ^(.*)$ http://www.example.com/$1 [R=301]
Adrian Grigore
I get a redirect loop if I add that to my .htaccess file (see it in the edited original question) just under the RewriteRule.
Philip Morton
Try removing the old mod_rewrite commands and see if this solves the loop problem. Otherwise: what URL(s) is it looping through? One way to tell is typing "wget http://www.example.net/some-article/" in your linux console.
Adrian Grigore
+1 for simplicity. Also thought you needed a push to get over 5000 points! ;) hehe.
Frankie
Thanks, much appreciated :-)
Adrian Grigore
A: 

I converted from Drupal to WordPress a while ago, and I ended up spending a bunch of time trying to get these redirects to work properly. My big hangup was figuring out how to use RewriteCond in conjunction with RewriteRule. Here's an excerpt from an article I wrote about this:


# Rewrite drupal urls to worpress
RewriteCond %{QUERY_STRING} ^q=node/(.+)$
RewriteRule ^(.*)$ http://blog.componentoriented.com/?p=%1 [R=301,L]

# Forward RSS feed
RewriteCond %{QUERY_STRING} ^q=rss.xml$
RewriteRule ^(.*)$ http://blog.componentoriented.com/?feed=rss2 [R=301,L]
RewriteCond %{QUERY_STRING} ^q=atom/feed$
RewriteRule ^(.*)$ http://blog.componentoriented.com/?feed=rss2 [R=301,L]

It's also really helpful to keep an eye on inbound hits and links to see if anyone is using an old form of URL that you're not translating yet. I had an inbound link that was encoded as a PostNuke URL (from two blog platforms ago!), and this technique made it really easy to fix.

Here's a link to my article, btw: Use .htaccess to redirect from Drupal to Wordpress

D. Lambert
A: 

I would modify your existing rewrite block to look like this:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

# New code to redirect from example.net to example.com
# Permanent redirect for caching purposes, also include the query string
RewriteCond %{HTTP_HOST} ^example\.net
RewriteRule (.*) http://example.com/$1 [R=permanent,QSA,L]

# New code to redirect from www.example.net to www.example.com
RewriteCond %{HTTP_HOST} ^www\.example\.net
RewriteRule (.*) http://www.example.com/$1 [R=permanent,QSA,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

AddHandler php5-script .php

Note that I haven't actually tested this...

REMOTE_HOST may also work instead of HTTP_HOST. The mod_rewrite documentation recommends using HTTP_HOST, although this will not work if the brower only understands HTTP/1.0

R. Bemrose