.htaccess - error404 redirect within a directory?
-
Hi,
One of my clients has a CMS website offering Health and Safety training. When the courses have been run they automatically drop off of the system which is great for the front-end of the site but this leaves pile 404 errors for the URLs.
I am trying to put a .htaccess redirect in place that will redirect back to the main category for that course i/e :
http://www.domain.co.uk/courses/highways/6-NRSWA/27-nrswa-operative-sept-11.html
will redirect to
http://www.domain.co.uk/courses/highways/6-NRSWA
I have spent a looooong time hitting google for a solution but can't seem to come up with anything.
If at all possible I would also like to be able to post a php variable via the redirect url so that I can display a message on the category page saying that the course is no longer available be please select a different course. i/e:
http://www.domain.co.uk/courses/highways/6-NRSWA?course=not-available
Any help on this would be most gratefully received.
-
Thanks again for your input Sha.
I got there in the end!
-
I am not one to settle for a solution that I am not entirely happy with and although creating a 301 redirect to the home page of the site for courses that have dropped off of the system is fine for SEO, it doesn't help the site user that can't find the relevant course details.
Rather than a redirect solution using .htaccess, which would have been way easier had Joomla allowed it, I have resorted to adding some php within the main Joomla error.php file. Here's the code :-
// check if joomla http status code is 404 error
if ($this->error->code == '404') {// get current page URL
function curPageURL() {
$pageURL = 'http';
if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
$pageURL .= "://";
if ($_SERVER["SERVER_PORT"] != "80") {
$pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
} else {
$pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
}
return $pageURL;
}// check to see if 404 error relates to courses
if (strstr(curPageURL(), 'courses'))
{// strip last part of URL so that new url relates to relevant category
$newurl = dirname(curPageURL());// add query to url to trigger pop-up course not found message after page is redirected
$redirect = $newurl . '?course=notfound';// 301 redirect to relevant course category
Header( "HTTP/1.1 301 Moved Permanently" );
Header( "Location: " . $redirect);
exit();
}
}
?> -
Hi Ade,
My apologies on this one. My brain was a little addled after a long day of driving I think!
You are correct in that the "set and forget" solution we gave you to start with will be overwritten by the Joomla error handling after the .htaccess file has been read.
It is only possible to make standard 301's work using the .htaccess file if you were to manually create an individual rule for every deleted file using its specific joomla generated URL like this:
RewriteEngine On
RewriteRule ^courses/highways/6-NRSWA/27-nrswa-operative-sept-11.html$ /courses/highways/6-NRSWA?course=not-available [R=301,L]
The problem with this is that if your courses are regularly deleted, it will not be long before you have a very large .htaccess file, which could foreseeably lead to processing issues.
So in fact, the only "set and forget" solution is the one that you have already put in place and from a practical standpoint, it is the best solution.
Well done!
Sha
-
Hi Ade,
We have used .htaccess to create 301 redirects for Joomla sites in the past.
Can you email me your .htaccess file and the URL of your site and I will get our Chief Programmer to take a look for you.
My direct email is on my profile page (or you can private message me from your profile).
Sha
-
Hi Sha,
Thanks again for your time in helping me out.
Unfortunately with Joomla your suggestion doesn't work. I think what Joomla does is to check to see if a component or article exists and if it doesn't then it redirects to a file called error.php.
So essentially there is no 404 error for the .htaccess file to act upon as a page has been found that matches the URL, it just happens to be a very un-SEO friendly page churned out by Joomla.
I have tried adding - ErrorDocument 404 index.php - to the very top of the .htaccees file but this also does nothing.
It looks like joomla does not allow any true 404 errors to occur : (
I am sure that there must be some way of disabling the joomla error handling to allow the .htaccess file to handle them instead but I haven't found it yet. I have found a lot of other people asking the same question but no solution.
Thanks again.
Ade.
-
Hi Ade,
So sorry I wasn't around to follow this up for you. I have been away for the day and had wireless connection issues, so could not check Q&A until now.
Oops! Yes. Joomla does have its own error handling which does make a big difference, but it should be simple to fix once you understand what happens when you put the .htacces file in place.
When a request is received by the server, the .htaccess file is read from top to bottom, checking each rule in the file for a match. Once a match is found, the specific action assigned to that rule is executed. This means that no rules thereafter are read.
So, if you ensure that your code appears at the beginning of the .htaccess file, then whenever the conditions described by the rule are matched, the redirect will occur. However, if no other rule in the .htaccess is matched, then Joomla error handling will come into play should any other error be present.
This of course means that any specific rule you wish to add in the future should also appear before the Joomla code. As long as you always make sure it is last to be read, everything should work just as you intended.
Hope this helps,
Sha
-
Just as an update for anyone else trying to resolvee tis same issue on Joomla 1.5;
I haven't managed to find a way of disabling the Joomla error handling that is over ruling the .htaccess redirects so what I have done as a temporary measure is to modify the Joomla error 404 page so that it re-directs back to the home page of the site.
If I do find a solution I will update this thread.
-
Hi Sha,
Thank you for taking the time to help me out, I really appreciate it.
I have just spent the last few hours scratching my head and googling as I had already tried your solution but it didn't work for me. I did think that I must have made some sort of typo and so I copied and pasted from your code which works fine in your examples but again, it doesn't work on my site.
I think that I have found the reason and also discovered that I may have opened a bigger can of worms than I thought. I maybe should have said in my original post that this site was a Joomla 1.5 site but I didn't think that it would make any difference as the .htaccess file is outside of the joomla installation.
Apparantly Joomla overwrites any HTTP Status errors and so any .htaccess rewrites for files not found won't be carried out.
I think that my best option is to try to find out if it is possible to disable the Joomla HTTP Status error handling and to use your solution but unfortunately it's going to have to wait until tomorrow as I am already in the bad books for working late again.
If I find a solution I will post it here.
My issue is probably still a long way off being resolved but you answered my question perfectly and I am very grateful for your help.
-
Hi Ade,
Since learning this one thing will be something that you are likely to use over and over, I figure it is much better if you see how it actually works. So, we wrote a little resource to show you how to do a basic 301 redirect as well as one that goes back one level to your category page.
If you take a look at this simple 301 Redirect course for managing 404 errors, you can see three working pages and also download the code.
Let me know if you have any questions.
Hope that helps,
Sha
Got a burning SEO question?
Subscribe to Moz Pro to gain full access to Q&A, answer questions, and ask your own.
Browse Questions
Explore more categories
-
Moz Tools
Chat with the community about the Moz tools.
-
SEO Tactics
Discuss the SEO process with fellow marketers
-
Community
Discuss industry events, jobs, and news!
-
Digital Marketing
Chat about tactics outside of SEO
-
Research & Trends
Dive into research and trends in the search industry.
-
Support
Connect on product support and feature requests.
Related Questions
-
Will this 301 redirects help me?
Hello, recently, I found out about all the SEO advantages from 301 redirects. I had 3 websites that are now expired, their topic was Counter Strike 1.6 servers. All of these websites were registered 9 years ago and have few good backlinks (from website with 1%-3% spam score and DA 30+). Now I have one website that is not only about Counter Strike 1.6 but also many other Steam shooter games. If I revive these 3 old domains and 301 redirect them to my new one, will it help me with SEO and increase my ranking on Google?
Intermediate & Advanced SEO | | Bonito19930 -
Redirect Chain Advice
Hi, i hope you can help. My site crawl is showing that I have a redirect chain on my home page. Basically it shows I am going from : http: > https: > https://www. I need everything to go from http:// and http://www directly to https://www. without the chain. Below is a copy of the htaccess, can anyone see if there is an error in there that could be causing it. RewriteEngine On
Intermediate & Advanced SEO | | DaleZon
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] BEGIN WordPress <ifmodule mod_rewrite.c="">RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]</ifmodule> END WordPress In addition, i have seen that they have a plugin called SSL insecure content fixer installed. It is showing this under its status: Array ( [HTTPS] => on [PHPHANDLER] => /usr/local/php70/bin/php [HTTP_X_REAL_IP] => 109.158.20.158 [HTTP_X_FORWARDED_PROTO] => https ) I think possibly this might have something to do with the issue, any thoughts are appreciated Thanks0 -
Robots.txt and redirected backlinks
Hey there, since a client's global website has a very complex structure which lead to big duplicate content problems, we decided to disallow crawler access and instead allow access to only a few relevant subdirectories. While indexing has improved since this I was wondering if we might have cut off link juice. Since several backlinks point to the disallowed root directory and are from there redirected (301) to the allowed directory I was wondering if this could cause any problems? Example: If there is a backlink pointing to example.com (disallowed in robots.txt) and is redirected from there to example.com/uk/en (allowed in robots.txt). Would this cut off the link juice? Thanks a lot for your thoughts on this. Regards, Jochen
Intermediate & Advanced SEO | | Online-Marketing-Guy0 -
New Site (redesign) Launched Without 301 Redirects to New Pages - Too Late to Add Redirects?
We recently launched a redesign/redevelopment of a site but failed to put 301 redirects in place for the old URL's. It's been about 2 months. Is it too late to even bother worrying about it at this point? The site has seen a notable decrease in site traffic/visits, perhaps due to this issue. I assume that once the search engines get an error on a URL, it will remove it from displaying in search results after a period of time. I'm just not sure if they will try to re-crawl those old URLs at some point and if so, it may be worth it to have those 301 redirects in place. Thank you.
Intermediate & Advanced SEO | | BrandBuilder0 -
Blog subdomain not redirecting
Over the last few weeks I have been focused on fixing high and medium priority issues, as reported by the Moz crawler, after a recent transition to WordPress. I've made great progress, getting the high priority issues down from several hundred (various reasons, but many duplicates for things like non-www and www versions) to just five last week. And then there's this weeks report. For reasons I can't fathom, I am suddenly getting hundreds of duplicate content pages of the form http://blog.<domain>.com</domain> (being duplicates with the http://www.<domain>.com</domain> versions). I'm really unclear on why these suddenly appeared. I host my own WordPress site ie WordPress.org stuff. In Options / General everything refers to http://www.<domain>.com</domain> and has done for a number of weeks. I have no idea why the blog versions of the pages have suddenly appeared. FWIW, the non-www version of my pages still redirect to the www version, as I would expect. I'm obviously pretty concerned by this so any pointers greatly appreciated. Thanks. Mark
Intermediate & Advanced SEO | | MarkWill0 -
Solution to Duplicate Pages within Shopify
Thanks in advance for your time and expertise. I am having issues with duplicate page content and titles on a client's Shopify subdomain. Examples below. Two questions: #1 How can I solve this issue? Do I block the duplicate pages from being crawled? With meta NoIndex? Establish the main page as the canonical version and stop obsessing? Other... #2 Is it a big concern or am I needlessly obsessing? Feels like a concern that needs to be addressed, but maybe not? Duplicate Page Content Examples: #1 URL: http://shop.shopvandevort.com #1 Duplicate URLs: http://shop.shopvandevort.com/collections/all; http://shop.shopvandevort.com/collections/all?page=1 #2 URL: http://shop.shopvandevort.com/collections/accessories #2 Duplicate URLs: http://shop.shopvandevort.com/collections/accessories; http://shop.shopvandevort.com/collections/types?q=Accessories Duplicate Page Title Examples: http://shop.shopvandevort.com/collections/vendors?q=For%20Love%20And%20Lemons http://shop.shopvandevort.com/collections/for-love-lemons http://shopvandevort.com/blog/tag/for-love-and-lemons/ http://shop.shopvandevort.com/collections/for-love-lemons?page=1 Thanks again for taking a look here, very much appreciated.
Intermediate & Advanced SEO | | AaronHurst0 -
301 Redirect how to get those juices flowing
HI Guys Following on from my previous posts i have still not got my rankings back, http://www.seomoz.org/q/301-redirect-have-no-ranking i am beginning to think that i do have a underlying issue in the site which is restricting me My old site www.economyleasinguk.co.uk was moved to www.economy-car-leasing.co.uk, as mentioned the 301 seemed to go really well and all pages updated within 48 hours, however over 5 months on and the juice from the old site is still not pushed over and i hardly rank at all for anything. here are a list of things i have tried 1:Swapped the original 301 which was PHP for an Htaccess 2: added canonical tag to all pages 3: Turned on internal links as per this post by Everett Sizemore http://www.seomoz.org/blog/uncrawled-301s-a-quick-fix-for-when-relaunches-go-too-well number 3 was only done 5 days ago and initially bot traffic was immense, and may need a bit more time to see any results. I still think i have another underlying issue due to the below reasons 1: Page rank on home page is one but inner pages mixture of 1, 2 and 3 sporadically 2: If I copy text from home page no results 3: Open site explorer still has the old site at with a PA of 60 compared to 42 for the new site 4: Checked server logs and Google is visiting old site 5: Header responses are all correct for the canonicals and see no chaining of the 301’s 6: All pages are do follow and no robots restrictions 7: site:has only in the last few days removed the old site from the index naturally it could be that its just a matter of time however 5 months for a 301 is a very long time and 80% traffic loss is immense I would really appreciate it if someone can give the site a once over and see if i have missed anything obvious. Thanks in advance
Intermediate & Advanced SEO | | kellymandingo0 -
Probelms w/ 301 Redirects
I am trying to 301 redirect my old site to the new site (under the same domain. Most of the 404 urls are 301 redirects from 404 pages but they are still able to redirect. I need help understanding why I cannot redirect half of my list. <colgroup><col width="636"> <col width="342"> <col width="64"></colgroup>
Intermediate & Advanced SEO | | Melia
| OLD URL | 301 To: | Status |
| http://www.meliacaribetropical.com/en/groups.html | http://www.meliacaribetropical.com/en/groups.html | done |
| http://www.meliacaribetropical.com/entertainment/ | http://www.meliacaribetropical.com/en/services.html | done |
| http://www.meliacaribetropical.com/es/all_inclusive.html | http://www.meliacaribetropical.com/es/index.html | done |
| http://www.meliacaribetropical.com/es/galeria/ | http://www.meliacaribetropical.com/es/visor.html | done |
| http://www.meliacaribetropical.com/es/los-picapiedra/ | http://www.meliacaribetropical.com/es/index.html | done |
| http://www.meliacaribetropical.com/es/outside-us-telephone-listing.php | http://www.meliacaribetropical.com/en/index.html | done |
| http://www.meliacaribetropical.com/es/restaurantes/ | http://www.meliacaribetropical.com/es/gastronomia.html | done |
| http://www.meliacaribetropical.com/es/reuniones-eventos/ | http://www.meliacaribetropical.com/es/grupos.html | done |
| http://www.meliacaribetropical.com/es/spa/ | http://www.meliacaribetropical.com/es/servicios.html | done |
| http://www.meliacaribetropical.com/es/terms-condition.php | http://www.meliacaribetropical.com/es/index.html | done |
| http://www.meliacaribetropical.com/gallery/beach.html | http://www.meliacaribetropical.com/en/index.html | done |
| http://www.meliacaribetropical.com/gallery/dining.html | http://www.meliacaribetropical.com/en/gastronomy.html | done |
| http://www.meliacaribetropical.com/gallery/pools.html | http://www.meliacaribetropical.com/en/index.html | done |
| http://www.meliacaribetropical.com/lowest-rate.php | http://www.meliacaribetropical.com/en/index.html | done |
| http://www.meliacaribetropical.com/press/ | http://www.meliacaribetropical.com/en/index.html | done |
| http://www.meliacaribetropical.com/spanish/ | http://www.meliacaribetropical.com/es/index.html | done |
| http://www.meliacaribetropical.com/spanish/services/ | http://www.meliacaribetropical.com/en/services.html | done |
| http://www.meliacaribetropical.com/spanish/services/ | http://www.meliacaribetropical.com/es/servicios.html | done |
| http://www.meliacaribetropical.com/terms-condition.php | http://www.meliacaribetropical.com/en/index.html | done |
| http://www.meliacaribetropical.com/es/galeria/piscinas.html | http://www.meliacaribetropical.com/es/index.html |
|
| http://www.meliacaribetropical.com/es/galeria/playa.html | http://www.meliacaribetropical.com/es/index.html |
|
| http://www.meliacaribetropical.com/es/galeria/restaurantes.html | http://www.meliacaribetropical.com/es/gastronomia.html |
|
| http://www.meliacaribetropical.com/es/prensa/ | http://www.meliacaribetropical.com/es/index.html |
|
| http://www.meliacaribetropical.com/es/prensa/family-facilities-amenities.html | http://www.meliacaribetropical.com/es/index.html |
|
| http://www.meliacaribetropical.com/es/prensa/melia-caribe-tropical-announces-fall-promotion.html | http://www.meliacaribetropical.com/es/index.html |
|
| http://www.meliacaribetropical.com/es/prensa/melia-international-brand-overhaul.html | http://www.meliacaribetropical.com/es/index.html |
|
| http://www.meliacaribetropical.com/press/family-facilities-amenities.html | http://www.meliacaribetropical.com/en/index.html |
|
| http://www.meliacaribetropical.com/press/melia-caribe-tropical-announces-fall-promotion.html | http://www.meliacaribetropical.com/en/index.html |
|
| http://www.meliacaribetropical.com/press/melia-international-brand-overhaul.html | http://www.meliacaribetropical.com/en/index.html |
|
| http://www.meliacaribetropical.com/spanish/accommodations/ | http://www.meliacaribetropical.com/es/habitaciones.html |
|
| http://www.meliacaribetropical.com/spanish/dining/ | http://www.meliacaribetropical.com/es/gastronomia.html |
|
| http://www.meliacaribetropical.com/spanish/entertainment/ | http://www.meliacaribetropical.com/es/servicios.html |
|
| http://www.meliacaribetropical.com/spanish/events/ | http://www.meliacaribetropical.com/es/index.html |
|
| http://www.meliacaribetropical.com/spanish/flintstones/ | http://www.meliacaribetropical.com/es/index.html |
|
| http://www.meliacaribetropical.com/spanish/gallery/ | http://www.meliacaribetropical.com/es/visor.html |
|
| http://www.meliacaribetropical.com/spanish/gallery/beach.html | http://www.meliacaribetropical.com/es/index.html |
|
| http://www.meliacaribetropical.com/spanish/gallery/dining.html | http://www.meliacaribetropical.com/es/gastronomia.html |
|
| http://www.meliacaribetropical.com/spanish/gallery/pools.html | http://www.meliacaribetropical.com/es/index.html |
|
| http://www.meliacaribetropical.com/spanish/press/ | http://www.meliacaribetropical.com/es/index.html |
|
| http://www.meliacaribetropical.com/spanish/press/melia-caribe-tropical-announces-fall-promotion.html | http://www.meliacaribetropical.com/es/index.html |
|
| http://www.meliacaribetropical.com/spanish/press/melia-international-brand-overhaul.html | http://www.meliacaribetropical.com/es/index.html |
|
| http://www.meliacaribetropical.com/spanish/royal/ | http://www.meliacaribetropical.com/es/servicio-real.html |
|
| http://www.meliacaribetropical.com/spanish/sitemap.html | http://www.meliacaribetropical.com/es/index.html |
|
| http://www.meliacaribetropical.com/spanish/spa/ | http://www.meliacaribetropical.com/es/servicios.html |
| gastronomia.html0