Take the 2-minute tour ×
Webmasters Stack Exchange is a question and answer site for pro webmasters. It's 100% free, no registration required.

As a new user, I'm not allowed to post more than two hyperlinks here. So I have added a space after every http (ignore them and read as full URLs).

System: Debian Etch, Apache 2.2

I have a WordPress instance with multiple blogs. I would like to redirect some of the folders based on the year and month, while leaving other folders go to the actual locations.

Example: I have archives for a few years, like 2010, 2011 and 2012:
http ://mydomain.com/wordpress/myblog/2010/02
http ://mydomain.com/wordpress/myblog/2011/01
http ://mydomain.com/wordpress/myblog/2012/01

I would like to redirect all 2010 and 2011 posts to another blog with the same folder structure:
http ://mydomain.com/wordpress/myotherblog/2010/02
http ://mydomain.com/wordpress/myotherblog/2011/01
and so on.

I would like to have 2012 and beyond to go to the actual site (http ://mydomain.com/wordpress/myblog/2012/01).

I tried mod_rewrite with the following, one rule at a time to test redirection for just one year (and to expand later for other years), and none of them worked!
* RewriteEngine is already on since there are some default WordPress rewrites.
* RewriteBase is set to http://mydomain.com/wordpress/ .
* I put my rule before all the other default WordPress rules are processed.

Didn't work solution #1

RedirectMatch 301 /myblog/2010/(.*) /myotherblog/2010/$1

Didn't work solution #2

RewriteRule /myblog/2010/(.*) http ://mydomain.com/myotherblog/2010/$1 [R=301]

Didn't work solution #3

RedirectPermanent /myblog/2010/(.*) http ://mydomain.com/myotherblog/2010/$1

I've also tried the above rules with and without a fully qualified URL for the new location.

The rewrite log, with log level set to 9, did not provide any useful information. It shows that it looks at the pattern specified against the URL (as mentioned in the rule), but finally what happens is a passthrough to http ://mydomain.com/myblog/ for all URLs or a 500 Internal Server Error.

Any ideas on where I could be going wrong or any alternative solutions?

share|improve this question
    
worth noting that you have spaces in you rewrite rules after the target http. Is this intentional? –  William Greenly Jun 8 '12 at 14:33

2 Answers 2

I can't explain why your rules don't work without seeing the whole .htaccess file, but you might find the Monkeyman Rewrite Analyzer Plugin helpful:-

It is only an analyzer, it does not change any rules for you. It parses the rules down to their components and shows the connection with the resulting query variables. It allows you to try out different URLs to see which rules will match and what the value of the different query variables will be.

This might give you some better clues on how to debug your code.

share|improve this answer
    
Thanks for the response. Unfortunately, I cannot install any WordPress plugins on the site for specific reasons beyond my control. I downloaded this plugin to look at the code. Are there other ways to validate the rules? I'll post the entire .htaccess file after sometime. –  Ps Cjef May 30 '12 at 19:05
    
@PsCjef AFAIK this is the only one, Wordpress can be hinky though. Delete then reapply your permalink settings and try flushing your machine's DNS cache before testing the rules again. –  toomanyairmiles May 30 '12 at 19:15

Try the following RewriteRule:

RewriteRule ^myblog/(2010|2011)/(.*)$ http://mydomain.com/myotherblog/$1/$2 [R=301,L,NC]

Notice the inclusion of the L flag (last directive) the NC flag for nocase and the fact that the path name doesn't include the forward slash (since you might be dropping a .htaccess file into a directory). If it is not in an .htaccess file in a directory path that doesn't include the forward slash then simply:

RewriteRule ^/myblog/(2010|2011)/(.*)$ http://mydomain.com/myotherblog/$1/$2 [R=301,L,NC]

If you are not sure of either then

RewriteRule myblog/(2010|2011)/(.*)$ http://mydomain.com/myotherblog/$1/$2 [R=301,L,NC]
share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.