3

We use a base build template for most of our site builds, and until a few months ago we have not had a problem re-writing the sitemap url to sitemap.xml. The rule we use is:

RewriteRule ^sitemap.xml$ index.php?option=com_osmap&view=xml&tmpl=component&id=1 [L]

On thissite the rewrite rule works correctly. The site is running PHP 7.1.15 with Joomla version 3.8.5. However, a current development site here using the exact same rewrite rule and running the same PHP version but on Joomla 3.8.10 just shows a 404 page. I have also had the same experience on a number of sites built recently and have been forced to used the raw sitemap url in the robots.txt rather than the much cleaner sitemap.xml.

I can't for the life of me figure out why these redirects no longer work. The htaccess files on both sites use the same content albeit taylored to the individual site.

My full htaccesss for the site that is not working is below:

##
# @package    Joomla
# @copyright  Copyright (C) 2005 - 2014 Open Source Matters. All rights reserved.
# @license    GNU General Public License version 2 or later; see LICENSE.txt
##

##
# 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!
#
# Block out any script trying to base64_encode data within the URL.
RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR]
# Block out any script that includes a <script> tag in URL.
RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%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})
# Return 403 Forbidden header and show the content of the root homepage
RewriteRule .* index.php [F]
#
## End - Rewrite rules to block out some common exploits.

## Begin - Custom redirects

IndexIgnore *
Options -Indexes

#Force non-www:
#RewriteEngine on
#RewriteCond %{HTTP_HOST} ^www\.domain\.com [NC]
#RewriteRule ^(.*)$ https://domain.com/$1 [L,R=301]

#Force www:
#RewriteCond %{HTTP_HOST} ^domain.com [NC]
#RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301,NC]

### Rewrite sitemap url
RewriteRule ^sitemap.xml$ index.php?option=com_osmap&view=xml&tmpl=component&id=1 [L]

#
# If you need to redirect some pages, or set a canonical non-www to
# www redirect (or vice versa), place that code here. Ensure those
# redirects use the correct RewriteRule syntax and the [R=301,L] flags.
#
## End - Custom redirects
##
# 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.
#
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
#
# If the requested path and file is not /index.php and the request
# has not already been internally rewritten to the index.php script
RewriteCond %{REQUEST_URI} !^/index\.php
# and the requested path and file doesn't directly match a physical file
RewriteCond %{REQUEST_FILENAME} !-f
# and the requested path and file doesn't directly match a physical folder
RewriteCond %{REQUEST_FILENAME} !-d
# internally rewrite the request to the index.php script
RewriteRule .* index.php [L]
#
## End - Joomla! core SEF Section.

Is there anyway I can trouble shoot this issue?

Thank you in advance. Donna

  • What is the absolute path to the dev site? If in a subfolder you may need to add a RewriteBase /subfolder – YellowWebMonkey Jun 27 '18 at 15:06
  • The absolute path is as per the above (bairns.cloudaccess.host). This is a free sub-domain from Cloadaccess however the joomla installation is in the root here. The rewrite rules do not work once the sites are migrated to the full live domains either. This has only been happening over the last 4 months or so, as we have a standard process that is followed for every site build. Is there anything that could be causing this on the server? – Dtorr1981 Jun 27 '18 at 16:25
2

Since you said it was in the root folder, try adding this below the RewriteEngine On:

RewriteBase / 

I double checked CloudAccess's documentation and they mention that step is needed as well: https://www.cloudaccess.net/additional-resources/87-error-messages/206-url-error-removing-index-php-from-a-url.html

EDIT: You need to move your redirect above the condition that contains this line:

RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]

when I posted your htaccess and tested on https://htaccess.madewithlove.be/, that line was catching so it wasn't getting to your rule: enter image description here

When putting it at the top, right under the rewrite's, it should work.

  • I've just tried that and it's still the same. I'm baffled. I really do not know why this does not work anymore. I have just pasted the exact htaccess from the site that works into this site and it is still the same. I'll be migrating the site to the live domain later today for more testing. – Dtorr1981 Jun 28 '18 at 11:15
  • Did you move the RewriteBase / to the top right below RewriteEngine On? You should go to system information and check to see if rewrite is enabled as well. – YellowWebMonkey Jun 28 '18 at 11:58
  • Yes, and Rewrite is enabled. As mentioned this is a base build template which we use as a starter for all builds. All of the settings are already configured, it uses the exact same configuration as the site that works. This is why it is so frustrating. Could there be anything server side which would prevent this rule working? – Dtorr1981 Jun 28 '18 at 12:05
  • Have you commented out Options +FollowSymLinks? Most likely the issue is differences between the hosting. You may want to drop a ticket with Cloud Access if that doesn't fix it. – YellowWebMonkey Jun 28 '18 at 15:29
  • I seem to have found the problem - this occurs when you switch from legacy to modern URL routing - I'm not really sure how to get around it? Any suggestions? – Dtorr1981 Jun 28 '18 at 16:26

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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