web-dev-qa-db-fra.com

Les URL Magento autres que la page d'accueil ne fonctionnent pas sans index.php

Mon magento est installé sur Ubuntu Linux sous/var/www/magento. Cette question ressemble à certaines des questions dans les archives mais est en réalité quelque peu différente. Lorsque j'ai installé Magento sur Ubuntu Linux, j'ai activé les réécritures d'URL Apache mod_rewrite.

Lorsque je vais sur http: // localhost/magento, mon serveur réécrit l'URL en http: // localhost/magento/et affiche la page. Je clique ensuite sur l'un des liens dans la barre de navigation, disons que c'est l'élément de barre de navigation "foo". Magento m'amène ensuite à:

http: // localhost/magento/foo.html

qui affiche une page Apache "Introuvable".

Je dois changer l'URL en ----->

http: // localhost/magento/index.php/foo.html

afin d'afficher la page.

C'est comme si quelque chose clochait dans mon fonctionnement mod_rewrite.

Merci,

John Goche

CONFIGURATION: Système -> Configuration -> (Général ->) Web:

Utiliser les réécritures du serveur Web: OUI

URL de base: http: // localhost/magento

Si je définit "User Web Server Rewrites:" sur NO, les liens de ma page principale fonctionnent correctement, mais consultez la page http: // localhost/magento/index.php/foo.html qui affiche la page correcte, mais alors que le site fonctionne, je n'aime pas l'URL. Je voudrais que ce soit http: // localhost/magento/foo.html sans le bit index.php, car cela serait probablement aussi plus convivial pour le référencement.

Merci,

John Goche


Mise à jour: J'ai essayé de décommenter mon adresse IP artificielle 127.0.1.1 qu'ubuntu avait mise dans/etc/hosts et d'y placer ma vraie IP mais pas de chance. J'ai toujours exactement le même problème. Et l'URL à l'intérieur de mon navigateur est réécrite en http: // localhost/etc ... lorsque je tape 192.168.3.31, avalanche ou avalanche.com à l'intérieur. J'essaie toujours de comprendre comment résoudre le problème décrit ci-dessus car cela ne l'a pas fait.

127.0.0.1       localhost
#127.0.1.1      avalanche

192.168.4.35    avalanche avalanche.com

Lorsque je redémarre Apache, j'obtiens:

# service Apache2 restart
 * Restarting web server Apache2                                                Apache2: Could not reliably determine the server's fully qualified domain name, using 192.168.4.35 for ServerName
 ... waiting Apache2: Could not reliably determine the server's fully qualified domain name, using 192.168.4.35 for ServerName

Je ne sais pas comment résoudre le problème d'origine. Je teste sur un serveur local.


J'ai même essayé cette solution, puis redémarré Apache2, mais pas de chance!

Comment supprimer index.php des URL?

plaçant ainsi:

RewriteEngine On
RewriteBase /mymagento/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

ne fonctionne pas, même avec RewriteBase /, cela ne fonctionne pas.


OK, j'ai finalement réussi à résoudre le problème. Le fichier/etc/Apache2/sites-enabled/000-default a la directive suivante définie pour tous les répertoires définis dans ce fichier:

 AllowOverride None

Par exemple, pour/var/www qui est le jeu de racines de document par défaut sur le système Linux Ubuntu 12.04 LTS, ce fichier contient

    <Directory /var/www/>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride None
            Order allow,deny
            allow from all
    </Directory>

ce qui, si je comprends bien, signifie que les fichiers .htaccess trouvés dans ce répertoire et tous ses sous-répertoires ne seront pas analysés. Pour résoudre le problème, il suffit de définir:

AllowOverride All

ce qui signifie que vous pourrez remplacer les directives de configuration du serveur trouvées dans /etc/Apache2/Apache2.conf (ou /etc/Apache2/httpd.conf qui y est inclus).

L'une des raisons pour lesquelles AllowOverride est défini sur Aucun par défaut pourrait être qu'il ralentit le serveur et l'autre pour des raisons de sécurité. Cette directive doit être définie à l'intérieur d'une balise et ces dernières peuvent remplacer la première. Une autre raison pour laquelle cela n'est pas défini par défaut est que le fait d'avoir à analyser .htaccess de manière récursive sur le site chaque fois qu'un fichier dans un chemin de répertoire est chargé peut ralentir le système et ainsi placer les éléments .htaccess dans /etc/Apache2/httpd.conf lorsque cela est possible, il est recommandé car cela peut entraîner une augmentation de la vitesse.

Alors place

    <Directory /var/www/>
            Options Indexes FollowSymLinks MultiViews
            #AllowOverride None
            AllowOverride All
            Order allow,deny
            allow from all
    </Directory>

dans/etc/Apache2/sites-enabled/000-default

et exécutez: service Apache2 restart

est la solution.

19
user1527429

As-tu essayé:

RewriteBase /magento/

et non RewriteBase/mymagento/car votre URL est http: // localhost/magento /

Votre hôte virtuel Apache permet-il d'écraser la configuration, par ex.

<VirtualHost *:80>
...
<Directory /var/www/magento/>
    AllowOverride All
</Directory>
</VirtualHost>
19
Sylvain Rayé

Avez-vous le fichier .htaccess approprié dans votre racine Magento? Vous pouvez également rencontrer des problèmes avec localhost. Il est conseillé d'utiliser 127.0.0.1 ou de mapper les domaines de développement dans votre fichier d'hôtes.

4
benmarks

L'activation du module de réécriture Apache pour Wamp a fonctionné pour moi.

enter image description here

3
Mukesh

Dans la configuration Magento (accessible dans le panneau d'administration Magento via Système> Configuration), il existe des paramètres pertinents qui déterminent à quoi ressemble l'URL conviviale du moteur de recherche.

Web > Search Engine Optimization > Use Web Server Rewrites

Un paramètre qui doit toujours être activé. Sinon, "/index.php/" sera ajouté à l'URL, ce qui est inutile et a l'air moche. Pour activer cette option, vous devez également activer Apache mod_rewrite dans votre environnement d'hébergement .

Catalog > Search Engine Optimizations > Product URL Suffix

La valeur par défaut ici est ".html" qui sera ajoutée à chaque URL de produit. Certains experts SEO affirment que cela est nécessaire pour une meilleure évaluation, d'autres exportations SEO disent que ce n'est pas le cas. Pour notre intégration de MageBridge avec Joomla! ce paramètre doit être vide.

Catalog > Search Engine Optimizations > Category URL Suffix

Les mêmes que ci-dessus, mais maintenant des catégories.

Catalog > Search Engine Optimizations > Use categories path for product URLs

Lorsque cette option est activée, l'URL du produit comprendra également les clés d'URL de catégorie. Bien que l'on puisse faire valoir que cela provoque un contenu en double, les pages de produits peuvent également en bénéficier car elles font partie d'une structure plus grande.

Catalog > Search Engine Optimizations > Use Canonical Link Meta Tag For Products

Si vous êtes vraiment préoccupé par le contenu en double (ce qui n'est pas aussi mauvais que certains vous le diront), vous pouvez activer la balise canonique qui indique aux moteurs de recherche quelle page mène une fois le contenu en double détecté.

Catalog > Search Engine Optimizations > Use Canonical Link Meta Tag For Categories

La même chose que ci-dessus, mais pour les catégories.

lecture supplémentaire sur la question http://www.yireo.com/tutorials/magento/magento-administration/664-fixing-url-rewrites-with-magento

3
Anton S
Go to admin url of your site. 
Suppose,http://example.com/index.php/admin/

Go to 'System' menu from navigation and click on 'Configuration'.
Under the 'General' tab in the left, click on 'Web'.
Open the 'Search Engines Optimization' section by clicking on it.
Then set 'Use Web Server Rewrites' value to 'No'
3
DPrithweema

Il s'agit d'un problème mod_rewrite . J'utilise Ubuntu et j'ai eu le même problème lors de l'installation d'Apache et de magento pour une migration de magasin.

Changement /etc/Apache2/sites-available/000-default.conf contenir

<VirtualHost ...>
...
<Directory /var/www>
    Options Indexes FollowSymLinks MultiViews   
    AllowOverride All
    Order allow,deny
    allow from all 
</Directory>

</VirtualHost>

donc permettant des réécritures pour var/www sur le serveur Web.

Pour que Apache traite les règles de réécriture à partir des fichiers magentos .htaccess,
activer le module de réécriture via

Sudo a2enmod rewrite

et redémarrer Apache via

Sudo /etc/init.d/Apache2 force-reload 
//(not service Apache2 restart)

résolu tout le problème pour moi.

Voir http://wiki.ubuntuusers.de/Apache/mod_rewrite et
http://wiki.ubuntuusers.de/Apache pour une explication approfondie sur la façon de configurer les choses de la bonne façon.

1
Lemonade

J'ai eu le même problème lors du transfert de mon site en direct vers localhost. Enfin je l'ai résolu.

J'ai Windows OS. J'ai donc utilisé la pile WAMP pour mon hôte local. J'ai passé beaucoup de temps à récupérer toute l'URL et son contenu dans mon hôte local en changeant le fichier .htaccess, en modifiant la table core_config_data dans la base de données, mais tout s'est mal passé.

Enfin, j'ai obtenu un indice pour activer rewrite_module dans le serveur Apache. 1. Pour l'activer Cliquez sur l'icône Wamp dans la barre d'état (WAMP-> Apache-> Modules Apache-> et sélectionnez rewrite_module). 2. Redémarrez le serveur Wamp. 3. vider le cache (facultatif je pense) - Supprimer tous les fichiers du dossier var/cache

Assurez-vous d'avoir un fichier .htaccess dans votre dossier racine, supposons (localhost/magento/.htaccess). Si vous ne l'avez pas, vous n'obtiendrez pas le résultat.

C'est ça.

J'espère que maintenant vous pourrez récupérer toutes les autres pages et URL autres que la maison et que vous n'obtiendrez pas la page d'erreur 404.

1
user2560431