Galère pour supprimer index.php

Nouveau WRInaute
Bonjour tout le monde,

Je galère et c'est réellement un calvaire pendant un mois pour supprimer index.php dans mes urls j'ai vu un tas topics, un tas d'articles à ce sujet et franchement je suis epuisé je m'en remet à vous en espérant pourvoir réglé mon probleme qui traine. J'ai essayé plus d'une dizaine de fois le htaccess pour introduire la règle de suppressions qui semble différente d'un hébergeur à un autre. Les solutions que j'ai trouvés sont toujours des réponses pour supprimer l'index.php dans les urls du site je crois. Dans mon cas mes urls dans le site sont correctes telle par exemple:

Code:
https://www.domaine.com/gestion-des-articles

Mais dans les serp la page figure ainsi:
Code:
https://www.domaine.com/index.php/gestion-des-articles

En cliquant sur le lien j'atterris toujours avec
Code:
https://www.domaine.com/index.php/gestion-des-articles

Alors je ne sais pas si c'est google ou si c'est moi pour la question de l'affichage dans les serp

J'ai récemment migrer de http vers https et mis FORCER HTTPS dans joomla

Le dernier htaccess que j'utilise contient ceci :
Code:
RewriteEngine On
RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR]
RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})

RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

RewriteCond %{HTTP_HOST} ^DomaineSecondaire\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.DomaineSecondaire\.com$
RewriteRule ^/?$ "https\:\/\/DomainePrincipal\.com\/" [R=301,L]

RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^.*$ https://www.%1%{REQUEST_URI} [L,NE,R=301]

La redirection du domaine secondaire vers le principal je l'ai faite depuis le cpanel qui à inscrit ces règles.
Peut être que mes règles ne sont dans le bon ordre ?

Dans la search console je constate dans Indexée, mais non envoyée via un sitemap que mes urls contiennent index.php et dans Couverture, Envoyée et indexée mes urls sont correctes (sans index.php)

Si vous pouvez m'eclairer car je n'ai plus de souffle avec cette galère qui ne cesse de galoper.
 
Nouveau WRInaute
En remplacement de la ligne ?
RewriteRule . /index.php [L]
Merci.
 
Dernière édition:
Nouveau WRInaute
Je précise encore que mes liens dans le site ne contiennent pas d'index.php mais seulement dans les resultats du moteurs (pas toutes les pages) et dans la search console. Dans la search console c'est https://www.domaine.com/index.php/gestion-des-articles et lorsque je fais ouvrir dans un nouvel onglet j'atterris dans mon site avec toujours https://www.domaine.com/index.php/gestion-des-articles
Si je comprend bien cette page devrais être rediriger sans l'index.php avec les règles posés dans le htaccess ?
 
WRInaute passionné
En remplacement de la ligne ?
RewriteRule . /index.php [L]
Merci.

A la place de tout ce bloc.

Et ajouter aussi
Code:
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^index.php$ / [L,R=301]

Bref se débarrasser du "index.php" avec des redirections pour qu'il n'apparaisse plus jamais, et Google mettra à jour ses urls petit à petit.
 
  • Like
Reactions: FB7
Nouveau WRInaute
Merci rick38,

J'accede ici pour poster ma solution et je trouve la votre merci.
Je l'ai essayer hier soir sans rajouter la 2eme ligne et ca n'avais pas marcher.
Code:
RewriteRule ^index.php$ / [L,R=301]

Bon, je ne vais pas essayer une 2eme fois votre solution du moment que ca marche après une vingtaine de tentative et si ce n'est pas plus ... et, avec le secours d'une boite de paracetamol à porté de la main

Les regles suivantes ont solutionnées mon problème plus d'index.php, mais bon, c'est peut être différent d'un hebergeur à un autre:

Code:
RewriteBase /
# Removes index.php from ExpressionEngine URLs
RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
RewriteCond %{REQUEST_URI} !/system/.* [NC]
RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,NE,L]

# Directs all EE web requests through the site index file
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]


RewriteCond %{HTTP_HOST} ^DomaineSecondaire\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.DomaineSecondaire\.com$
RewriteRule ^/?$ "https\:\/\/DomainePrincipal\.com\/" [R=301,L]

RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^.*$ https://www.%1%{REQUEST_URI} [L,NE,R=301]

La source est ici:
https://stackoverflow.com/questions/9608366/remove-index-php-from-url-with-htaccess


Code:
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^.*$ https://www.%1%{REQUEST_URI} [L,NE,R=301]

Cette partie je l'ai faite avant depuis le cpanel il permet de régler le message de google analytics Nom d'hôtes redondants, pour le duplicate content. Alors on verra après si y a plus d’embûche en cours de route.

Merci.
 
Nouveau WRInaute
Oups .. j'ai oublié:
Code:
RewriteCond %{REQUEST_URI} !/system/.* [NC]

Je n'ai pas compris cette ligne d'un dossier nommé system ?
Merci.
 
Nouveau WRInaute
Merci rick38,

A la place de tout ce bloc.
Et ajouter aussi
Code:
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^index.php$ / [L,R=301]

Ca n'a pas marcher probablement spécifique à certains serveurs en tout cas c'est régler et j'ai posté ma solution c'est pas visible car en attente d'approbation par un modérateur merci quand même.
 
Discussions similaires
Haut