I'm trying to direct BizAmmo.com to www.BizAmmo.com using the following format: RewriteEngine On RewriteEngine onRewriteCond %{HTTP_HOST} ^bizammo\.com RewriteRule (.*) http://www.bizammo.com/$1 [R=301,L] Code (markup): The site is run with Wordpress as the backend. It works in the sense of redirecting like I mentioned, but when I do that, it screws up the category links, and makes every category link to the home page rather than the category page. Is there anything I can do about it, or should I just forget about the redirect? Thanks! Jenn
That should work - you could try adding start/end symbols to the regex pattern to ensure the whole URL gets captured: RewriteRule ^(.*)$ http://www.bizammo.com/$1 [R=301,L] Or you could try using the REQUEST_URI variable: RewriteRule .* http://www.bizammo.com%{REQUEST_URI} [R=301,L]
No luck in either case unfortunately. It still has the category links point to the home page. Thanks though.
Ah, right. Sorry I misunderstood. The redirection is fine but it's the category links? The rewrite rules shouldn't affect the actual URLs that WordPress renders so I'm not sure where the problem is - is it the target href in the rendered links (i.e. location shown in status bar when you hover over them) that is wrong or is just when you click it you get redirected to the wrong place? If it's the latter, it would help if you posted the whole .htaccess file.
Hey Rodney88, I just ran into the same exact problem that jhmattern ran into, which is what drew me to this thread. In my situation, the latter case is the issue. When I hover over my Wordpress category link, it shows the proper url. But when I click on it it just goes to my main page. I'm willing to post my .htaccess file, if you're still willing to assist on this issue??? Also, could this problem be related to the fact that I just instituted my 301 redirect? Is there some time period that these changes take to become effective? Thanks, Knox
Here's my .htaccess file. Thanks, in advance, for your help. # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> Options +FollowSymLinks RewriteEngine on RewriteCond %{HTTP_HOST} ^crookedpitch.com [NC] RewriteRule ^(.*)$ http://www.crookedpitch.com/$1 [L,R=301] # END WordPress
rodney... not sure how I missed your last response, so I apologize. I did eventually get a 301 redirect working to direct non-www to www pages on my site without a redirect problem. However, the 301 redirect caused all other crazy problems on every blog I implemented it on (it created an odd login loop / problem, it disabled all commenting on my blogs, and it screwed up the wysiwyg editor on at least one of the blogs, which made my post content disappear on publishing). I can't explain it, and it happened with multiple versions of the redirect that were given to me by programmers and that I found through tutorial sites, so I had to disable it completely unfortunately. But removing it solved every other problem.
Did you try with this code ? : RewriteEngine On RewriteCond %{HTTP_HOST} ^yoursite.com [NC] RewriteRule ^(.*)$ http://www.yousite.com/$1 [L,R=301] Code (markup): It should only do a proper redirect, with no side effects. ps: glad to see you solved those weird problems with yours blogs.
It looks exactly like what I was using before. Just to try though, I just plugged it into one of my htaccess files for a blog, and as soon as I added it, the blog stopped acknowledging my username and password again. It's definitely a redirect problem.
Maybe a last try with this WP plugins ( I just remember it now ) : Enforce www. Preference It's widely used, hope it will work for you.
jhmattern, it sounds like WP is not generating the correct canonical hostname as the URL for the form action. When you submit the data to WP to process it, it's intercepted by your mod_rewrite www/non-www rule and forces a redirect instead, giving the impression of nothing happening at all. I couldn't say for certain but can't think of any other explanation - in this case you would be best off using the plugin posted above, as it sounds like it will force WP to generate the correct URL every time. If you want to stick with a mod_rewrite solution, you could try adding in another condition that does not do the redirect if we are posting data. Eg: RewriteEngine On RewriteEngine on RewriteCond %{HTTP_HOST} ^bizammo\.com$ RewriteCond %{REQUEST_METHOD} !^POST$ [NC] RewriteRule ^(.*)$ http://www.bizammo.com/$1 [R=301,L] Code (markup): Crooked Pitch, you need to force www before WordPress can intercept and rewrite to the index script that powers the blog. Eg: <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / # Force www RewriteCond %{HTTP_HOST} ^crookedpitch.com [NC] RewriteRule ^(.*)$ http://www.crookedpitch.com/$1 [L,R=301] # WordPress rewrite RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> Code (markup):
Rodney and Monty... Thank you so much for your assistance on this issue. I installed the WP plug in and everything works great. I installed the plugin before Rodney posted his last entry. Quick question... For SEO purposes only, am I better off staying with the plugin or trying Rodney's last recommendation? Thanks again, Knox
Question about the plugin... would something like that interfere with rewrite rules about permalink formatting?
No, it should respect your settings. If you personalized your URL structure, it will keep the choosen permalink format.
I had the same problem with performing a 301 to the www version with a wordpress blog. The .htaccess looked like this originally. # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress Code (markup): Then I tried changing it to this. # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress RewriteEngine On RewriteCond %{HTTP_HOST} ^site\.com$ [NC] RewriteRule ^(.*)$ http://www.site.com/$1 [R=301,L] Code (markup): After I did that all links on my site redirected to the index.php page. I played around with it for awhile and finally found that it worked if I simply placed the redirect first, like this... RewriteEngine On RewriteCond %{HTTP_HOST} ^site\.com$ [NC] RewriteRule ^(.*)$ http://www.site.com/$1 [R=301,L] # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress Code (markup): I don't know why that fixed it, but it worked. Perhaps someone with more knowledge of .htaccess could come along and give an explanation. Anyways. Hope that helps.
Unfortunately, mine was originally first, and all of the problems still occurred, so that wasn't the problem in my case. But thanks for reminding me about the issue. I forgot to try that plugin, so I'll be sure to do that today.
No problem. To bad it did not work. Anyone else out there with some insight into this? I would love to really figure this one out. Seeing as this is a common Seo technique applied when using wordpress. Guess I am off to go do some reading on the subject. Does anyone know some good resources for learning about .htaccess? Either good forum threads or in depth articles.
WordPress can generate URLs in whatever format it wants to. It then uses mod_rewrite to rewrite every request to the single index.php script, which interprets the requested URI and displays the content accordingly. If you add in a redirect after the WordPress rules, the request would have already been rewritten to the index.php script. Normally it stops here and you'd never know about the rewrite, but when a redirect follows it sends out a moved header and your browser requests the new location. As the redirect only forces in the www subdomain, you will always get sent to index.php If you add in a redirect before the WordPress rules, the request has not already been rewritten to index.php so you the redirect will behave as expected.