web-dev-qa-db-fra.com

La règle de réécriture sitemap.xml ne fonctionne plus

Nous utilisons un modèle de construction de base pour la plupart des versions de notre site et, il y a quelques mois à peine, nous n’avions eu aucun problème à ré-écrire l’url du sitemap dans sitemap.xml. La règle que nous utilisons est:

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

Sur this site, la règle de réécriture fonctionne correctement. Le site utilise PHP 7.1.15 avec Joomla version 3.8.5. Cependant, un site de développement en cours ici utilise exactement la même règle de réécriture et exécute la même version PHP, mais sur Joomla 3.8.10, il affiche uniquement une page 404. J'ai également eu la même expérience sur un certain nombre de sites récemment construits et j'ai été obligé d'utiliser l'URL de sitemap brute dans le fichier robots.txt plutôt que le fichier beaucoup plus propre sitemap.xml.

Je n'arrive pas à comprendre pourquoi ces redirections ne fonctionnent plus. Les fichiers htaccess sur les deux sites utilisent le même contenu, même s’ils sont personnalisés pour chaque site.

Mon htaccess complet pour le site qui ne fonctionne pas est ci-dessous:

##
# @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.

Y at-il de toute façon que je peux résoudre ce problème?

Merci d'avance. Donna

3
Dtorr1981

Puisque vous avez dit qu'il se trouvait dans le dossier racine, essayez d'ajouter ceci sous le RewriteEngine On:

RewriteBase / 

J'ai vérifié deux fois la documentation de CloudAccess et ils ont mentionné que cette étape était également nécessaire: https://www.cloudaccess.net/additional-resources/87-error-messages/206-url-error-removing- index-php-from-a-url.html

EDIT: Vous devez déplacer votre redirection au-dessus de la condition qui contient cette ligne:

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

quand j'ai posté votre htaccess et testé sur https://htaccess.madewithlove.be/ , cette ligne était interceptée, elle ne se lisait donc pas: enter image description here

Lorsque vous le mettez en haut, juste sous celui de la réécriture, cela devrait fonctionner.

2
YellowWebMonkey