views:

187

answers:

1

I have two domains, cshen.ca and cshen.net, both point to the same place.

I'm trying to accomplish the following with mod_rewrite:

  • cshen.net is 301 redirected to cshen.ca
  • www.cshen.net or www.cshen.ca are both redirected to cshen.ca
  • the path after the domain is preserved after being redirected, for example www.cshen.net/foo/bar/ would be redirected to cshen.ca/foo/bar/

I've tried a variety of rules, but can't seem to get it to work.

RewriteCond %{HTTP_HOST} ^cshen\.net$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://cshen.ca/$1 [R=301,L]

This accomplishes the first two rules, but redirects everything back to the home page, and does not preserve the rest of the URL.

RewriteCond %{HTTP_HOST} ^cshen\.net$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^/(.*)$ http://cshen.ca/$1 [R=301,L]

Making a small change and adding a slash '/' to the RewriteRule preserves the rest of the URL, but only www.cshen.ca is being redirected. Neither cshen.net nor www.cshen.net are being redirected anywhere.

I've also tried Apache's guide and used this code:

RewriteCond %{HTTP_HOST} !^cshen\.ca [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^/(.*) http://cshen.ca/$1 [L,R]

I thought this would work, since it should redirect any url that isn't cshen.ca, however, like the second piece of code, it does nothing to cshen.net or www.cshen.net.

I've just about ran out of ideas of other things to try. I would appreciate it if someone could help out!

Addendum: in case it matters, I'm using WordPress's pretty URLs, and the rewrite rules for that are:

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

I've tried putting my rules before and after the WordPress rules (when I put it before I'd of course add RewriteEngine On before my rules), doesn't make any difference.

Thanks!

A: 

don't know how to edit, solved by placing the code from apache before WP's

must have forgotten to test this earlier.

Click on the word "edit" at the bottom of the post.
David Zaslavsky
If your question is no longer relevant then close/delete it.
Gumbo