Hi, we just finished development of a complete redesign of a site and are going live with it. The old site was a basic static site, this new one is a full Joomla CMS site. The new site was developed in a sub-directory, but we are now moving it to the root (we deleted the old site files first).
So to keep Google searches happy, we added 301 redirects from all of our prominent old site URLs to relevant new site URLs in the .htaccess file.
As we are using Joomla, we enabled it’s default SEF URLs using the .htaccess file they give for this purpose. And these SEF URLs are what we are redirecting the old pages to.
It sounded pretty straight forward and simple, BUT none of the redirects appear to be working. We still get 404 error pages for these old links.
Here is the entire .htaccess file if someone can help us figure out why it doesn’t appear to be working correctly:
##
# @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.
Options +FollowSymLinks
#
# mod_rewrite in use
RewriteEngine On
########## 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 rewrite http:// to http://www.
#
RewriteCond %{HTTP_HOST} ^dohenyfoundation\\.org [NC]
RewriteRule ^(.*)$ http://www.dohenyfoundation.org/$1 [R=301,L]
#
########## End
########## 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
########## Begin - 301 Redirect old site pages
#
Redirect 301 /grant/grant_awarded_edu.htm http://www.dohenyfoundation.org/grant-application/current-grants-awarded
Redirect 301 /downloads/1999_cedf_annual.pdf http://www.dohenyfoundation.org/images/stories/downloads/1999_cedf_annual.pdf
Redirect 301 /downloads/2000_cedf_annual.pdf http://www.dohenyfoundation.org/images/stories/downloads/2000_cedf_annual.pdf
Redirect 301 /downloads/2001_cedf_annual.pdf http://www.dohenyfoundation.org/images/stories/downloads/2001_cedf_annual.pdf
Redirect 301 /downloads/2002_cedf_annual.pdf http://www.dohenyfoundation.org/images/stories/downloads/2002_cedf_annual.pdf
Redirect 301 /downloads/2003_cedf_annual.pdf http://www.dohenyfoundation.org/images/stories/downloads/2003_cedf_annual.pdf
Redirect 301 /downloads/2004_cedf_annual.pdf http://www.dohenyfoundation.org/images/stories/downloads/2004_cedf_annual.pdf
Redirect 301 /downloads/2005_cedf_annual.pdf http://www.dohenyfoundation.org/images/stories/downloads/2005_cedf_annual.pdf
Redirect 301 /downloads/2006_cedf_annual.pdf http://www.dohenyfoundation.org/images/stories/downloads/2006_cedf_annual.pdf
Redirect 301 /downloads/2007_cedf_annual.pdf http://www.dohenyfoundation.org/images/stories/downloads/2007_cedf_annual.pdf
Redirect 301 /about/about.htm http://www.dohenyfoundation.org/about-us/about-the-foundation
Redirect 301 /portraits/portraits.htm http://www.dohenyfoundation.org/portraits-of-giving/aid-to-those-in-need/impacto-program
Redirect 301 /grant/grant_awarded_religion.htm http://www.dohenyfoundation.org/grant-application/current-grants-awarded
Redirect 301 /grant/grant.htm http://www.dohenyfoundation.org/grant-application/focus-on-giving
Redirect 301 /portraits/port_rel_stmary.htm http://www.dohenyfoundation.org/portraits-of-giving/advancing-religion/st-camillus-center-for-pastoral-care
Redirect 301 /portraits/port_med_eye.htm http://www.dohenyfoundation.org/portraits-of-giving/advancing-medicine/doheny-eye-institute
Redirect 301 /portraits/port_edu_dolores.htm http://www.dohenyfoundation.org/portraits-of-giving/advancing-education/st-genevieves-high-school
Redirect 301 /grant/grant_awarded_medicine.htm http://www.dohenyfoundation.org/grant-application/current-grants-awarded
Redirect 301 /about/about_board.htm http://www.dohenyfoundation.org/about-us/board-of-directors
Redirect 301 /grant/grant_awarded.htm http://www.dohenyfoundation.org/grant-application/current-grants-awarded
Redirect 301 /portraits/port_medicine.htm http://www.dohenyfoundation.org/portraits-of-giving/advancing-medicine/santa-teresita-medical-center
Redirect 301 /portraits/port_needy_mend.htm http://www.dohenyfoundation.org/portraits-of-giving/aid-to-those-in-need/impacto-program
Redirect 301 /portraits/port_religion.htm http://www.dohenyfoundation.org/portraits-of-giving/advancing-religion/st-camillus-center-for-pastoral-care
Redirect 301 /portraits/port_edu.htm http://www.dohenyfoundation.org/portraits-of-giving/advancing-education/st-genevieves-high-school
Redirect 301 /grant/grant_app.htm http://www.dohenyfoundation.org/grant-application/grant-application
Redirect 301 /faq/faq.htm http://www.dohenyfoundation.org/grant-application/faqs
Redirect 301 /portraits/port_needy_salesian.htm http://www.dohenyfoundation.org/portraits-of-giving/aid-to-those-in-need/salesian-boys-a-girls-club
Redirect 301 /contact/contact.htm http://www.dohenyfoundation.org/contact-us
Redirect 301 /about/about_contact.htm http://www.dohenyfoundation.org/contact-us
Redirect 301 /grant/grant_awarded_health.htm http://www.dohenyfoundation.org/grant-application/current-grants-awarded
Redirect 301 /downloads/Supplemental_Sheet.doc http://www.dohenyfoundation.org/grant-application/grant-application
Redirect 301 /portraits/port_rel_stvincent.htm http://www.dohenyfoundation.org/portraits-of-giving/advancing-religion/st-vincent-de-paul-church
Redirect 301 /portraits/port_edu_place.htm http://www.dohenyfoundation.org/portraits-of-giving/advancing-education/the-place-corps
Redirect 301 /downloads/GrantApplicationForm_08.doc http://www.dohenyfoundation.org/grant-application/grant-application
Redirect 301 /downloads/application.pdf http://www.dohenyfoundation.org/grant-application/grant-application
Redirect 301 /downloads/GrantApplicationForm.doc http://www.dohenyfoundation.org/grant-application/grant-application
Redirect 301 /portraits/port_health_harbor.htm http://www.dohenyfoundation.org/portraits-of-giving/improving-health-a-welfare/valley-family-center
#
########## End - 301 Redirects
I’ll answer your question later on, but first please allow me to walk through some of the rules in this .htaccess.
# 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})
These rules are very odd. If you need them it means you have register_globals enabled in PHP which is a Bad Thing ™. It is not for nothing that it is deprecated now and well be completely gone from PHP6 (and up). Please check if your site uses register_globals in PHP and if it does, turn it off and remove the lines I put above from the .htaccess
RewriteBase /
RewriteBase is only needed if you also use mod_alias. You don’t, so remove that line.
Now, for your actual problem. What’s happening is that Apache is rewriting everything to index.php, as per the last code block above. Once that rewrite is done, your redirects will never match, and that is why they don’t get executed.
You should move them to somewhere above the line RewriteRule .? index.php.
Preferrably they should go just below
These rules are very odd. If you need them it means you have register_globals enabled in PHP which is a Bad Thing ™. It is not for nothing that it is deprecated now and well be completely gone from PHP6 (and up). Please check if your site uses register_globals in PHP and if it does, turn it off and remove the lines I put above from the .htaccess
I checked, and register_globals is off already. These rules are part of the default Joomla htaccess rules specified for security purposes. I’ll look more into if these are still necessary.
Code: RewriteBase /
RewriteBase is only needed if you also use mod_alias. You don’t, so remove that line
Originally this line was commented out. But none of the SEF URL menu links work unless this is un-commented (basically, you can only view the homepage, but all other pages give errors). So I’ll have to leave this unless I discover why this is happening.
Now, for your actual problem. What’s happening is that Apache is rewriting everything to index.php, as per the last code block above. Once that rewrite is done, your redirects will never match, and that is why they don’t get executed.
You should move them to somewhere above the line RewriteRule .? index.php.Preferrably they should go just below:
OK, I did change the other couple items, and placed all of the 301 redirect lines ABOVE the ‘# Begin - Joomla! core SEF Section’ where the index.php redirect is written.
But it still doesn’t appear to be working. I even moved the 301 redirects to the top of the .htaccess file, but no difference.
For ease of dealing with an .htaccess file’s contents, I will always put Apache core directives first and mod_rewrite last. Simple reason: Core directives are ALWAYS handled first!
:tup: to JD for the use of Redirects when the POWER of regex can’t be brought to bear on redirections (like in this case).
QSA is automatic UNLESS a new query string is added, therefore, you don’t need the QSA in …
should be explained as “you’re not using the atom so don’t create it (wasting Apache resources - I’ve read that Joomla is a resource hog so this becomes critical very rapidly).”
Finally, when I saw the FIRST (.) => index.php, I thought the same thing but did look above to see that it would only apply if ONE of the silly “hacks” matched. Therefore, the FIRST (.) => index.php should never take place (if the hacks are removed, the RewriteRule MUST be removed, too).
Yup, it’s another one of those “don’t burn CPU cycles for nothing”
Ah yes, but I didn’t copy some of the RewriteConds (just to confuse you ;)):
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]
Although they are dubious I can see them serve a purpose. So these Conds would remain, and hence the Rule should also remain
I don’t have a clue as to why the Redirect statements don’t work btw (as per post #3). Do you David?
Just checking in on this issue after the weekend. I appreciate the information and great passion for excellent coding! We’re more front-end designers here, but completely appreciate the attention to detail and best-practices in all areas.
So back to the initial issue, though. Any other things I could try or ways I could test to see what else might be at work to prevent the redirects from working?
Thanks! The site has been live for a few days now. We would like the old search results to be worked out pretty soon if possible.
##
# @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.
Options +FollowSymLinks
#
# mod_rewrite in use
RewriteEngine On
########## 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 rewrite http:// to http://www.
#
RewriteCond %{HTTP_HOST} ^dohenyfoundation\\.org [NC]
RewriteRule .? http://www.dohenyfoundation.org%{REQUEST_URI} [L,QSA,R=301]
#
########## End
########## Begin - 301 Redirect old site pages
#
Redirect 301 /grant/grant_awarded_edu.htm http://www.dohenyfoundation.org/grant-application/current-grants-awarded
Redirect 301 /downloads/1999_cedf_annual.pdf http://www.dohenyfoundation.org/images/stories/downloads/1999_cedf_annual.pdf
Redirect 301 /downloads/2000_cedf_annual.pdf http://www.dohenyfoundation.org/images/stories/downloads/2000_cedf_annual.pdf
Redirect 301 /downloads/2001_cedf_annual.pdf http://www.dohenyfoundation.org/images/stories/downloads/2001_cedf_annual.pdf
Redirect 301 /downloads/2002_cedf_annual.pdf http://www.dohenyfoundation.org/images/stories/downloads/2002_cedf_annual.pdf
Redirect 301 /downloads/2003_cedf_annual.pdf http://www.dohenyfoundation.org/images/stories/downloads/2003_cedf_annual.pdf
Redirect 301 /downloads/2004_cedf_annual.pdf http://www.dohenyfoundation.org/images/stories/downloads/2004_cedf_annual.pdf
Redirect 301 /downloads/2005_cedf_annual.pdf http://www.dohenyfoundation.org/images/stories/downloads/2005_cedf_annual.pdf
Redirect 301 /downloads/2006_cedf_annual.pdf http://www.dohenyfoundation.org/images/stories/downloads/2006_cedf_annual.pdf
Redirect 301 /downloads/2007_cedf_annual.pdf http://www.dohenyfoundation.org/images/stories/downloads/2007_cedf_annual.pdf
Redirect 301 /about/about.htm http://www.dohenyfoundation.org/about-us/about-the-foundation
Redirect 301 /portraits/portraits.htm http://www.dohenyfoundation.org/portraits-of-giving/aid-to-those-in-need/impacto-program
Redirect 301 /grant/grant_awarded_religion.htm http://www.dohenyfoundation.org/grant-application/current-grants-awarded
Redirect 301 /grant/grant.htm http://www.dohenyfoundation.org/grant-application/focus-on-giving
Redirect 301 /portraits/port_rel_stmary.htm http://www.dohenyfoundation.org/portraits-of-giving/advancing-religion/st-camillus-center-for-pastoral-care
Redirect 301 /portraits/port_med_eye.htm http://www.dohenyfoundation.org/portraits-of-giving/advancing-medicine/doheny-eye-institute
Redirect 301 /portraits/port_edu_dolores.htm http://www.dohenyfoundation.org/portraits-of-giving/advancing-education/st-genevieves-high-school
Redirect 301 /grant/grant_awarded_medicine.htm http://www.dohenyfoundation.org/grant-application/current-grants-awarded
Redirect 301 /about/about_board.htm http://www.dohenyfoundation.org/about-us/board-of-directors
Redirect 301 /grant/grant_awarded.htm http://www.dohenyfoundation.org/grant-application/current-grants-awarded
Redirect 301 /portraits/port_medicine.htm http://www.dohenyfoundation.org/portraits-of-giving/advancing-medicine/santa-teresita-medical-center
Redirect 301 /portraits/port_needy_mend.htm http://www.dohenyfoundation.org/portraits-of-giving/aid-to-those-in-need/impacto-program
Redirect 301 /portraits/port_religion.htm http://www.dohenyfoundation.org/portraits-of-giving/advancing-religion/st-camillus-center-for-pastoral-care
Redirect 301 /portraits/port_edu.htm http://www.dohenyfoundation.org/portraits-of-giving/advancing-education/st-genevieves-high-school
Redirect 301 /grant/grant_app.htm http://www.dohenyfoundation.org/grant-application/grant-application
Redirect 301 /faq/faq.htm http://www.dohenyfoundation.org/grant-application/faqs
Redirect 301 /portraits/port_needy_salesian.htm http://www.dohenyfoundation.org/portraits-of-giving/aid-to-those-in-need/salesian-boys-a-girls-club
Redirect 301 /contact/contact.htm http://www.dohenyfoundation.org/contact-us
Redirect 301 /about/about_contact.htm http://www.dohenyfoundation.org/contact-us
Redirect 301 /grant/grant_awarded_health.htm http://www.dohenyfoundation.org/grant-application/current-grants-awarded
Redirect 301 /downloads/Supplemental_Sheet.doc http://www.dohenyfoundation.org/grant-application/grant-application
Redirect 301 /portraits/port_rel_stvincent.htm http://www.dohenyfoundation.org/portraits-of-giving/advancing-religion/st-vincent-de-paul-church
Redirect 301 /portraits/port_edu_place.htm http://www.dohenyfoundation.org/portraits-of-giving/advancing-education/the-place-corps
Redirect 301 /downloads/GrantApplicationForm_08.doc http://www.dohenyfoundation.org/grant-application/grant-application
Redirect 301 /downloads/application.pdf http://www.dohenyfoundation.org/grant-application/grant-application
Redirect 301 /downloads/GrantApplicationForm.doc http://www.dohenyfoundation.org/grant-application/grant-application
Redirect 301 /portraits/port_health_harbor.htm http://www.dohenyfoundation.org/portraits-of-giving/improving-health-a-welfare/valley-family-center
#
########## End - 301 Redirects
########## 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
Could there be something at the hosting server root level that is preventing this from happening? The site is hosted on a shared account at a place called X7 Hosting (http://x7hosting.com/).
And if it helps, this new site was originally developed in a subdirectory for testing. When we went live, we cleared out everything on the root first. There had been a TON of junk there along with their old site (mostly a lot of scripts for running things like bulletin boards, mailing lists, shopping carts, cgi-bin, etc.). I spoke with X7 tech support and they said this was all leftover as default setup items from the previous hosting company, and should be safe to delete. So we cleared the entire ‘/public’ directory, and then copied the entire Joomla site over to this. And we had been using the default Joomla modified .htaccess file when in testing for the SEF URLs to work. But we hadn’t added the 301 redirects yet.
Because mod_alias is a part of Apache’s core, the Redirects cannot be turned off.
If you’ve checked that mod_rewrite IS enabled, it’s likely that it’s “stealing” the request so the first thing I’d check is that the redirections EXIST at the specified locations. If not, that’s your problem. If they are, it’s likely something within Joomla’s configuration file.
OK, thanks. I looked in the PHP Information setup in Joomla. It’s showing that mod_rewrite is a loaded module. So I would assume this means it’s enabled, correct?!?
And when you say the “redirections EXIST at the specified locations”, do you mean the URLs that the 301 redirects point to? If so, these are definitely valid. If not, please let me know what you mean and how to check.
And on one other note, is there any chance that me having ‘Rewrite base /’ could be interfering at all? This isn’t usually needed when the site exists at the root, but when I commented it out, none of the links worked (all of the SEF URLs were broken).
Ahhhh, so it DOES look like the RewriteBase / could be the problem???
I just tried again commenting out the RewriteBase line and we get a page that says “Internal Server Error”.
I also tried a couple of the old links that should redirect to see if those would work now, but they gave me the same “Internal Server Error” page.
When we moved the site to the root, I did go into the configuration.php file for Joomla and changed all of the relevant lines to point to the root instead of the subdirectory.
Do you think the hosting company could have configured something that would mess it up so bad? I just don’t want them to hack away if they’re unfamiliar with Joomla and make anything worse.
Is the “Internal Server Error” a typical error page that points to anything?
Thanks again for all the help! I really want to know why this happened so it doesn’t happen on future sites, as we would normally develop a site in a subdirectory.
I have a client who’s moving to Joomla and is demanding an increase from PHP’s 8Mb to 64Mb - which will affect ALL of my other websites. There is NO Joomla documentation to cover this and reports of problems with as much as 128Mb! I’d heard that Joomla was a memory hog but this is ridiculous!
Okay, with no other (recent) experience with Joomla, I have to fall back on my WP configuration experience. Its config files (2 of them) are clear in that they each require the DocumentRoot to be identified twice, once by http location and another by physical location (local directory structure). That has been enough to move directories.
What you may need to do is REINSTALL Joomla in the DocumentRoot (remove all the other debris).
500 is Apache reporting that you broke it. There is no way around that but, usually, to fix the syntax error introduced in the .htaccess file (the usual cause). The hosting company has nothing to do with it so look where your other three fingers are pointing.
Hi, I’ve been looking into the Joomla side of things, but I’m pretty sure the configuration file is setup properly. I looked through it one more time.
But someone in a post on the Joomla forums suggested that he’s seen the need for the ‘RewriteBase /’ to be activated on sites that reside on hosts that are using ‘virtual’ servers or cloud-based systems.
Could this be true? If so, would there be a way to get the 301 redirects to still work in this type of situation (can you override the RewriteBase / for just the redirects?).
RewriteBase is designed to UNDO a mod_alias redirection so mod_rewrite can work on it. What does that have to do with Joomla if there are no Redirect statements floating around your site? IMHO, someone’s been blowing smoke about “the need for the ‘RewriteBase /’” statement.