Supprimer /index.php de l'URL de Magento donne une erreur 404


26

J'utilise Magento ver. 1.7.0.2.

Voici le lien vers mon site web: http://dev.blokeundees.com.au/

Je dois supprimer le /index.phpdossier des URL, j'ai donc également modifié le .htaccessfichier et le backend (sécurisé, réécriture du serveur Web) et j'ai /index.phpété correctement supprimé.

Mais lors de l'accès au frontend, il renvoie une erreur 404 (Page non trouvée) pour chaque page à l'exception de la page d'index.

Je ne sais pas pourquoi cela se produit.


Comme @ sander-mangel l'a expliqué, vérifiez votre htaccessje vais ajouter fournissez-nous votre contenu htaccess pour avoir une idée de ce qui ne va pas
Sylvain Rayé

1
Avez-vous réussi à résoudre le problème?
Sander Mangel

Réponses:


27

Comment supprimer index.php des URL Magento

Magento est une plate-forme fantastique pour vendre en ligne, sans doute la meilleure, mais il y a une chose qui m'a toujours frustré en tant que SEO… Ce répertoire index.php embêtant dans l'URL de TOUTES les pages internes - cauchemar!

Il n'y a aucun avantage pour eux.

Ils sont mauvais pour le référencement, mauvais pour la structure et la cohérence du site, puis ils sont encore pires pour un monstre d'URL propre comme moi. Ils ne sont pas assez sexy. Nettoyons les choses.

URL Magento optimisées pour le référencement en deux étapes

Heureusement, alors que je faisais récemment une boutique Magento pour un client, j'ai fait un peu de recherche et trouvé une solution assez simple au problème. Cela implique quelques changements dans les paramètres d'administration de Magento et l'ajout ou la modification d'un simple fichier .htaccess pour trier la réécriture de leurs URL de magasin standard.

Suivez les étapes simples ci-dessous et vous serez un pas de plus vers le succès du référencement avec votre propre boutique Magento, et votre référencement n'aura pas d'excuse pour diminuer la pertinence.

1) Modifions un paramètre, Admin

La première chose que vous devez faire est de vous connecter à votre panneau d'administration Magento (index.php / admin) afin de changer un paramètre très simple qui permettra à Magento de savoir que vous avez l'intention d'utiliser la réécriture d'URL dans votre boutique plutôt que leur laid défaut URL.

Connectez-vous et modifiez ce paramètre:

Allez dans Système> Configuration> Web> Optimisation des moteurs de recherche

Utiliser les réécritures du serveur Web: OUI

C'était facile, non? Bon, maintenant pour la dernière étape.

2) Utilisons un fichier .htaccess pour réécrire les URL

La dernière étape consiste à créer un fichier .htaccess dans le dossier d'installation de Magento afin de compléter les paramètres que vous avez modifiés dans vos paramètres d'administration plus tôt, et cela réécrira en fait les URL. Choisissez la version .htaccess applicable ci-dessous.

Si votre boutique Magento est installée en root (public_html), utilisez ceci:

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

Si votre boutique Magento est installée dans un sous-dossier (public_html / shop), utilisez ceci:

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

Vous avez terminé - j'espère que cela vous aidera!

Cela empêchera définitivement votre SEO de se retirer les cheveux.

Faites-moi savoir dans les commentaires ci-dessous si vous l'utilisez ou rencontrez des problèmes!


2
Cela ne fonctionne pas dans ma version de Magento, 1.9.x. Il supprime le index.phpde l'url, mais entraîne 404s à gauche et à droite.
Développeur d'été

10

Assurez-vous d'avoir un .htaccessfichier de travail , vous pouvez éventuellement le prendre à partir d'un nouveau téléchargement de la version Magento.

Vérifiez également si mod_rewriteest activé sur votre serveur. Cela peut être fait en lisant le à phpinfo();partir d'un script sur votre serveur. Ce post Stackoverflow vous explique comment.


Vous devez également vous assurer que le système -> Configuration -> Web -> Configuration des moteurs de recherche -> Utiliser les réécritures du serveur Web est activé.
Barbanet

Fichier de travail et inscriptible .htaccess .
Raptor

6

Pour supprimer index.phpdes URL, procédez comme suit:

  1. Se connecter Admin Magento
  2. Aller à System -> Configuration -> Web
  3. Dans l' onglet Optimisation du moteur de recherche, utilisez Réécritures du serveur Web, sélectionnez OUI .
  4. Assurez-vous que vos URL de base sécurisées et non sécurisées doivent se terminer par «/» .
  5. Maintenant éditez votre .htaccess(sera dans le dossier racine de magento) et collez le code qui est donné à ce lien

5

Vous n'avez pas besoin de changer autre que les points suivants. faites ces deux réglages et tout ira bien. dans Système -> Configuration -> Web -> Optimisations des moteurs de recherche, sélectionnez OUI.

Et dans Système -> Configuration -> Web -> Sécurisé -> Utiliser des URL sécurisées dans le frontend, sélectionnez OUI. Actualisez votre cache si vous rencontrez toujours un problème, procédez comme suit dans votre fichier httpd.config. AllowOverride None changer en AllowOverride All All sera OK maintenant


Dans mon httpd.config, il n'y a pas de ligne comme, AllowOverride None,. alors comment puis-je changer AllowOverride All
zus

3

Généralement, lorsque nous travaillons dans WAMP / XAMPP, nous avons besoin de:

1) pour vérifier que rewrite_module a été activé

par exemple, lorsque nous installons wampp dans C: \ wamp, nous pouvons trouver le httpd.conf dans C: \ wamp \ bin \ apache \ apache2.4.9 \ conf et l'activer en supprimant le signe # pour qu'il soit

LoadModule rewrite_module modules/mod_rewrite.so

2) pour activer RewriteBase

par exemple, lorsque nous installons magento v1.9 dans C: \ wamp \ www \ magento, nous devons modifier le .htaccess par défaut dans le dossier racine de magento pour qu'il soit

RewriteBase /magento/

Et aussi, nous devons activer la règle de réécriture par défaut en supprimant le signe #

RewriteRule .* index.php [L]

3) dans Système -> Configuration -> Web -> Optimisations des moteurs de recherche, sélectionnez OUI.

Et dans Système -> Configuration -> Web -> Sécurisé -> Utiliser des URL sécurisées dans le frontend, sélectionnez OUI.

Lorsque nous travaillons sur le serveur LAMP, il est similaire que nous devions vérifier tous les éléments ci-dessus pour permettre au module de réécriture de fonctionner, en pensant qu'il devrait y avoir de nombreuses différences de détails.


3

Solution de travail pour supprimer index.php de l'URL à l'exception d'Admin.Et si quelqu'un place index.php dans l'URL, il redirigera vers l'URL qui ne contient pas index.php. Pour cela, nous devons également définir, Utiliser les réécritures du serveur Web - Oui à partir de l'optimisation des moteurs de recherche

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} !^/index.php/admin/
RewriteRule ^index.php/(.*) $1 [R=301,QSA,L]

3

Allez d'abord dans système-> configuration-> web-> Optimisation des moteurs de recherche

Et sélectionnez Oui dans la liste déroulante Use Web Server Rewrites

Maintenant, allez à la racine de votre site

Ouvrez le fichier .htaccess sinon, créez le fichier .htaccess

en local, ce fichier est caché, vous devez donc afficher les fichiers cachés (ctrl + H)

Maintenant, si votre racine dans public_html / alors copiez ce code dans .htaccess

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

Si votre site est dans un sous-dossier public_html / yoursite Copiez ce code dans .htaccess

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

Après avoir mis à jour votre idée, ne fonctionne toujours pas, peut-on m'aider @ magento.stackexchange.com/q/220973/57334
zus

2

Assurez-vous que mod_rewrite est activé sur votre serveur. Dans mon cas, il a été désactivé. Une fois que je l'ai activé sur le serveur, cela fonctionne correctement.


Comment puis-je vérifier si mod_rewrite est activé ou non sur mon serveur,
zus

2
  1. Allez à votre dossier racine de site et vous pouvez trouver le fichier .htaccess. Modifiez cela. Ouvrez-le sur un éditeur de texte et trouvez cette ligne,

Réécrire Base / magento /.

Just replace it with

Réécrire la base /. Mettez le code suivant dans le .htaccess

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
</IfModule>

Dans le cas où votre Magento est installé dans un sous-dossier, par exemple «boutique», vous devez utiliser le code suivant:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /shop/
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /shop/index.php [L] </IfModule>
  1. Accédez ensuite à votre panneau d'administration et activez les réécritures du serveur Web. Vous pouvez le trouver dans Système> Configuration> Web> Optimisation des moteurs de recherche.

Réglez maintenant l' option «Utiliser les réécritures du serveur Web» sous «Optimisation des moteurs de recherche» sur «Oui».

  1. Ensuite, définissez l' option "Utiliser les URL sécurisées dans Frontend" sous "Sécurisé" sur "Oui". Cliquez sur le bouton «Save Config» en haut à droite:

  2. Accédez ensuite à votre page de gestion du cache (Système> Gestion du cache) et actualisez votre cache et actualisez également les redirections Web.


2

Je viens de changer le texte suivant dans le fichier .htaccess à la racine du projet magento:

#RewriteBase /magento/

à

RewriteBase /magento/

Remarque: changez simplement magento avec le nom de votre site Web.


2

Supprimez index.php de l'URL, y compris les pages internes, dans Magento en procédant comme suit:

Vérifiez le panneau d'administration: Utiliser les réécritures du serveur Web 'doit être défini sur' Oui 'dans Web> Optimisation des moteurs de recherche, puis suivez les deux étapes ci-dessous.

Étape 1: --------------- Insérez ce code au-dessus de tous les fichiers de mise en page (1 colonne et tous les autres) --------------

<?php 
$abc = Mage::helper('core/url')->getCurrentUrl();
if(strpos($abc,'index.php/') !== false) {
$pos = strpos($abc,'index.php/');
$p1 = substr($abc,0,$pos);
$p2 = substr($abc,$pos+10,strlen($abc));
$url = $p1.$p2;
header("HTTP/1.1 301 Moved Permanently");
header("Location: $url");
exit();
}
?>

--------------------------------- FIN Étape 1 -------------- -------------------------

Étape 2: --------------- Insérez ce code avant «Réécrire engion ON» dans le fichier htaccess --------------

index.php sur le domaine par défaut

RewriteCond %{THE_REQUEST} ^.*/index.php
RewriteCond %{REQUEST_URI} !^/downloader.*$
RewriteRule ^(.*)index.php$ www.abc.com [R=301,L]
RewriteCond %{HTTP_HOST} ^abc.com$ [NC]

Redirection HTTP vers HTTPS

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

----------------------------------- FIN Étape 2 ------------ -------------------------------------

Remarque: à l'étape 2, modifiez simplement l'URL de votre site. Vous n'avez rien à faire à l'étape 1.


1

Si quelqu'un utilise Apache2 ubuntu 16.04 , vous ne voyez pas le fichier httpd.conf n'importe où sur le serveur, vous devez donc aller sur le chemin: / etc / apache2 / apache2.conf , puis remplacer le code ci-dessous

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

avec le code ci-dessous:

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

Après cela, redémarrez le serveur: sudo service apache2 restart


0
  • Allez dans Système> Configuration> Web> Optimisation des moteurs de recherche> Utiliser les réécritures du serveur Web, sélectionnez OUI.
  • réécriture sudo a2enmod
  • service apache2 restart

Ces 3 ont fonctionné pour moi.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.