Forum Moderators: phranque

Message Too Old, No Replies

301 .htaccess redirect not working

Told Joomla "catching" redirects before .htaccess

         

RamzWS

1:12 am on Oct 8, 2010 (gmt 0)

10+ Year Member



Ive been battling with these redirects for days now and cant seem to get any answers.

Here is a break down of the problem.

I enabled SEO and after checking with google webmaster tools I noticed I have duplicate title pages.
I also had phoca gallery die and couldnt access images. To fix this I decided to include the images in an article instead ( only
had 4 images )

I went through my whole site, creating appropriate titles, metatag descriptions and keywords. I also reorganised some things into different sections and categories. Installed XMap and created a sitemap. I uploaded this to google and edited my sitemap.php as well and resubmitted this too.

My problem now is when I search google I have loads of links that show up with my non SEO urls, and site description and only 2 with my actual SEO urls, and different site description. I know it may take sometime for the new SEO urls and description to update and Im happy to wait for a bit to see if this improves.

However, some of the non SEO urls, lead to 404's or load the url of old article ( which is better than a 404) I read up on how to correct the 404's ( these are urls where I have actually deleted the content, phoca gallery) and implemented some 301 redirects in my .htaccess as follows:
RewriteEngine On

#Redirect 301 urls
ErrorDocument 404 http://www.ramzws.com/recent-projects/
Redirect 301 http://ramzws.com/index.php?option=com_phocagallery&view=detail&catid=1:our-images&id=7:tilli&tmpl=component&Itemid=60 http://www.ramzws.com/recent-projects/
Redirect 301 /index.php?option=com_phocagallery&view=detail&catid=1:our-images&id=8:aussie-gigs&tmpl=component&Itemid=60 http://www.ramzws.com/recent-projects/
Redirect 301 /index.php?option=com_phocagallery&view=detail&catid=1:our-images&id=8:aussie-gigs&phocaslideshow=1&tmpl=component&Itemid=60 http://www.ramzws.com/recent-projects/
Redirect 301 /index.php?option=com_phocagallery&view=category&id=1:our-images&Itemid=60 http://www.ramzws.com/recent-projects/
Redirect 301 /index.php?option=com_content&view=article&id=19:joomla-overview&catid=25:website-design&Itemid=58 http://www.ramzws.com/packages/
Redirect 301 /index.php?option=com_content&view=article&id=49:5-page-website&catid=25:website-design&Itemid=58 http://www.ramzws.com/packages/
Redirect 301 /index.php?option=com_content&view=article&id=47:ramz-web-design-promo&catid=25:website-design&Itemid=58 http://www.ramzws.com/packages/
Redirect 301 /index.php?option=com_content&view=article&id=53:e-commerce-website&catid=25:website-design&Itemid=58 http://www.ramzws.com/packages/
Redirect 301 /index.php?option=com_huruhelpdesk&view=cpanel&Itemid=56 http://www.ramzws.com/ramz-help-desk/
Redirect 301 /index.php?option=com_content&view=frontpage&Itemid=1 http://www.ramzws.com/
Redirect 301 /index.php?option=com_content&view=article&id=51%3Awelcome-to-ramz-web-solutions&catid=1%3Alatest-news&Itemid=58 http://www.ramzws.com/
####### End Redirect 301 urls


This didnt redirect any of the pages listed for redirection....
I logged into my cpanel to see if using the redirect there would make any difference, these were already loaded in my cpanel and even deleting and re-adding made no difference.

I logged a support ticket with my host to enquiry how this could be done correctly, three hours later I got the following response.
Hello,

We spent plenty of time investigating the issue, but we were unable to resolve it successfully.

I have created different types of redirect to test the case and each time I was receiving the custom 404 message generated by your Joomla website, rather than our default 404 error page.

I am unsure how exactly, but the Joomla application is handling the 404 errors itself and they do not reach the redirects in the .htaccess file


I asked if they thought it was related to Joomla, just to clarify and got the following response

Hello,

It might not be problem with the Joomla applicaiton itself, most likely its setup or configuration. However, I am pretty sure that if we remove the Joomla application from your account and leave the .htaccess file only, where the redirect rules lie, they will work.

But at this moment the Joomla application is "catching" the requests and they do not reach the redirect rules in the .htaccess file.

I do not want to blame the Joomla application, it is a very good one. Simply my level of expertise is not enough to resolve the issue


I have never heard of Joomla "catching" redirects before the .htaccess, I have searched through pages and pages of searches relating to problems with redirects and can not find anything even remotely similiar. Surely there is a way to have the redirects functioning properly.

Does anyone here know why Joomla might be "catching" the redirects, or whether this information is true, or even how can I fix it.

Cheers

phranque

1:54 am on Oct 8, 2010 (gmt 0)

WebmasterWorld Administrator 10+ Year Member Top Contributors Of The Month



welcome to WebmasterWorld [webmasterworld.com], RamzWS!

that first redirect incorrectly specifies the URL path by including the scheme and hostname.
the URL path should start with a slash.

also when using mod_alias Redirect the query string is stripped from the URL before matching occurs, so none of the other redirects will match.
you should be using mod_rewrite [httpd.apache.org] directives (RewriteCond/RewriteRule) for this problem instead of mod_alias.

RamzWS

2:47 am on Oct 8, 2010 (gmt 0)

10+ Year Member



Thanks for the feedback.

I missed that in the snippet of my .htaccess file, amazing what you can miss after staring it it for ages. What's more concerning is the fact my host missed it too! Cheers for that.

From your response I gather Im using a mod_alias way of redirecting and shouldnt be because it strips the query string. All reference I found before suggested doing it this way. What exactly is the query string it strips?

Would something like this work?

RewriteEngine on
RewriteBase /~quux/
RewriteRule ^index.php?option=com_phocagallery&view=detail&catid=1:our-images&id=8:aussie-gigs&tmpl=component&Itemid=60/$ http://www.ramzws.com/recent-projects


Or am I totally off base. I did have a read through the document you refered me to, Im just unsure of what way to do this.

If this example is wrong, can you please give me an example of what is right using these urls. Im pretty sure once I can see how it should be, ill be able to reference what I am suppose to be adding there ( and know what particular area in the reference material I need to re-read/learn)

Thanks in advance, you have been alot of help so far.

jdMorgan

4:22 am on Oct 8, 2010 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



Further, the syntax you have used for your 404 error document will result in a 302-Found redirect, not a 404 response, potentially making a real mess of your search listings and rankings...

Example of correct ErrorDocument and RewriteRule syntax:

# Declare custom 404 error document
ErrorDocument 404 /recent-projects/
#
# Set up to use mod_rewrite
Options +FollowSymLinks -MultiViews
RewriteEngine on
#
# Externally redirect requests for /index.php with certain query string values to 'friendly' URLs
#
# recent-projects
RewriteCond %{QUERY_STRING} ^option=com_phocagallery&view=detail&catid=1:our-images&id=7:tilli&tmpl=component&Itemid=60$ [OR]
RewriteCond %{QUERY_STRING} ^option=com_phocagallery&view=detail&catid=1:our-images&id=8:aussie-gigs&tmpl=component&Itemid=60$ [OR]
RewriteCond %{QUERY_STRING} ^option=com_phocagallery&view=detail&catid=1:our-images&id=8:aussie-gigs&phocaslideshow=1&tmpl=component&Itemid=60$ [OR]
RewriteCond %{QUERY_STRING} ^option=com_phocagallery&view=category&id=1:our-images&Itemid=60$
RewriteRule ^index\.php$ http://www.ramzws.com/recent-projects/ [R=301,L]
#
# packages
RewriteCond %{QUERY_STRING} ^option=com_content&view=article&id=19:joomla-overview&catid=25:website-design&Itemid=58$ [OR]
RewriteCond %{QUERY_STRING} ^option=com_content&view=article&id=49:5-page-website&catid=25:website-design&Itemid=58$ [OR]
RewriteCond %{QUERY_STRING} ^option=com_content&view=article&id=47:ramz-web-design-promo&catid=25:website-design&Itemid=58$ [OR]
RewriteCond %{QUERY_STRING} ^option=com_content&view=article&id=53:e-commerce-website&catid=25:website-design&Itemid=58
RewriteRule ^index.php http://www.ramzws.com/packages/ [R=301,L]
#
# Redirects to /ramz-help-desk/ and / ...
#

Please consider reviewing the resources cited in our Apache Forum Charter and the examples and tutorials in our Apache Forum Library. Also, look up each directive you use at apache.org -- The warning about the 302 redirect instead of a 404 response is a documented warning...

Jim

RamzWS

6:15 am on Oct 8, 2010 (gmt 0)

10+ Year Member



Thank you so much for your response. i will use this as a base and work through the rest. Ill let you know how it turns out =)

Seeing how it should be setup makes it easier for me to learn where I went wrong to begin with, and boy was I wrong. I will definately pursue the Apache Forum Charter including tutorials. I will also make sure I double check any directives with apache.org. Your feedback is invaluable. You are a Star!

I obviously got a bum steer in the first place on how to do this. Im so glad this forum is around, with expert advice. It truely is appreciated as the last thing I want to do is potentially make a mess of my site, search listings and rank!

RamzWS

7:50 am on Oct 8, 2010 (gmt 0)

10+ Year Member



I dont have a custom 404 page, I edited the default one and it appears as I have edited it.

I did try the above by adding the following to my htaccess, whole htaccess included just in case something else there is bugging it out.

When I did a site search in google and tried to navigate to a page in question [ramzws.com ]I now get the following response instead of the 404
The page isn't redirecting properly

Firefox has detected that the server is redirecting the request for this address in a way that will never complete.

* This problem can sometimes be caused by disabling or refusing to accept cookies.


htaccess file
##
# @version $Id: htaccess.txt 14401 2010-01-26 14:10:00Z louis $
# @package Joomla
# @copyright Copyright (C) 2005 - 2010 Open Source Matters. All rights reserved.
# @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
# Joomla! is Free Software
##

#####################################################
# READ THIS COMPLETELY IF YOU CHOOSE TO USE THIS FILE
#
# The line just below this section: 'Options +FollowSymLinks' may cause problems
# with some server configurations. It is required for use of mod_rewrite, but may already
# be set by your server administrator in a way that dissallows changing it in
# your .htaccess file. If using it causes your server to error out, comment it out (add # to
# beginning of line), reload your site in your browser and test your sef url's. If they work,
# it has been set by your server administrator and you do not need it set here.
#
#####################################################

## Can be commented out if causes errors, see notes above.
# Set up to use mod_rewrite
Options +FollowSymLinks -MultiViews
RewriteEngine on

#
# Externally redirect requests for /index.php with certain query string values to 'friendly' URLs
#
# recent-projects
RewriteCond %{QUERY_STRING} ^option=com_phocagallery&view=detail&catid=1:our-images&id=7:tilli&tmpl=component&Itemid=60$ [OR]
RewriteCond %{QUERY_STRING} ^option=com_phocagallery&view=detail&catid=1:our-images&id=8:aussie-gigs&tmpl=component&Itemid=60$ [OR]
RewriteCond %{QUERY_STRING} ^option=com_phocagallery&view=detail&catid=1:our-images&id=8:aussie-gigs&phocaslideshow=1&tmpl=component&Itemid=60$ [OR]
RewriteCond %{QUERY_STRING} ^option=com_phocagallery&view=category&id=1:our-images&Itemid=60$
RewriteRule ^index\.php$ http://www.ramzws.com/recent-projects/ [R=301,L]
#
########## Begin - Rewrite rules to block out some common exploits
## If you experience problems on your site block out the operations listed below
## This attempts to block the most common type of exploit `attempts` to Joomla!
#
## Deny access to extension xml files (uncomment out to activate)
#<Files ~ "\.xml$">
#Order allow,deny
#Deny from all
#Satisfy all
#</Files>
## End of deny access to extension xml files
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D) [OR]
# Block out any script trying to base64_encode crap to send via URL
RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [OR]
# Block out any script that includes a <script> tag in URL
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
# Block out any script trying to set a PHP GLOBALS variable via URL
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
# Block out any script trying to modify a _REQUEST variable via URL
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
# Send all blocked request to homepage with 403 Forbidden error!
RewriteRule ^(.*)$ index.php [F,L]
#
########## End - Rewrite rules to block out some common exploits

# Uncomment following line if your webserver's URL
# is not directly related to physical file paths.
# Update Your Joomla! Directory (just / for root)

# RewriteBase /

########## Begin - Joomla! core SEF Section
#
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/index.php
RewriteCond %{REQUEST_URI} (/|\.php|\.html|\.htm|\.feed|\.pdf|\.raw|/[^.]*)$ [NC]
RewriteRule (.*) index.php
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
#
########## End - Joomla! core SEF Section



Should this have worked?

phranque

11:07 am on Oct 8, 2010 (gmt 0)

WebmasterWorld Administrator 10+ Year Member Top Contributors Of The Month



since your example url does not contain the index.php it's not getting externally redirected, so you need to add the rules for redirecting the non-index cases.
something like:

RewriteRule ^$ [ramzws.com...] [R=301,L]


also things will be slightly more efficient in many cases if you move those condition checks that require a disk seek after the other RewriteConds:

RewriteCond %{REQUEST_URI} !^/index.php
RewriteCond %{REQUEST_URI} (/|\.php|\.html|\.htm|\.feed|\.pdf|\.raw|/[^.]*)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

jdMorgan

11:31 am on Oct 8, 2010 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



I suspect that we'd want to rely on the Joomla code to internally rewrite requests for "/" to "/index.php

While I can't be sure of that --not knowing the intended internal operation of this site-- I'm fairly sure we don't want to externally redirect from "/" to "/index.php".

An alternative would be to use the DirectoryIndex directive to do this rewrite.

Jim