404 - URL invalid

  • Posts: 2596
  • Thank you received: 62
  • Hikashop Business
4 years 7 months ago #310063

-- HikaShop version -- : 4.2.1
-- Joomla version -- : 3.9.11
-- PHP version -- : 7.2
-- Error-message(debug-mod must be tuned on) -- : 404 - URL invalid

Bonjour
une erreur que je n'avais plus vu depuis des annees : 404 - URL invalid , plante uniquement sur les produits et pas les categories ni le reste

joomla config
Réécriture d'URL en clair (SEF) = oui
Réécriture au 'vol' des URL = oui
.htaccess mode rewrite on


hk config

Nom SEF pour les catégories : vide
Nom SEF pour les produits : chaussures
Fil d'ariane simplifié : non
Enlever les ids des produits et des catégories dans les URLs : non

utilisez les url canonique si spécifiées
l'url suivante retourne une erreur 404 : domaine.com/chaussures/5075-grande-taille-femmes

non générer les url
domaine.com/chaussures-femmes-collections/chaussures/5076-5076-grande-taille-femmes
ca marche

dans le cas de modules ils sont bien associes a un menu de categorie ou produit listing

ca fait 10 ans que j'ai des url du type : domaine.com/chaussures/5075-grande-taille-femmes sans aucun problème ; ma config hikashop et joomla est inchangée et marche sur un autre site avec hikashop 3

tout le referencement va y passer !

d'ou peut venir ce probleme ?

merci

Last edit: 4 years 7 months ago by erickb.

Please Log in or Create an account to join the conversation.

  • Posts: 81481
  • Thank you received: 13062
  • MODERATOR
4 years 7 months ago #310074

Bonjour,

Alors je vois deux choses:
- déjà, vous avez un soucis avec l'id. Sur une URL vous avez 5075 et sur l'autre 5076.
Si vous avez rempli le champs URL canonique avec une URL dont l'id ne correspond pas (plus) à l'id du produit alors vous aurez une 404 si vous activez l'option "force canonical URLs on listings".
- En supposant que les ids soient les mêmes, si l'URL domaine.com/chaussures/5075-grande-taille-femmes
ne fonctionne pas alors que l'URL domaine.com/chaussures-femmes-collections/chaussures/5075-grande-taille-femmes fonctionne, cela indique que l'élément de menu "chaussures" est un enfant de l'élément de menu "chaussures-femmes-collections" et que vous n'avez pas d'élément de menu avec un alias "chaussures" directement à la racine du menu. Cela aurait pu arriver si par exemple vous avez déplacé l'élément de menu "chaussures" sous l'élément de menu "chaussures-femmes-collections" sans refaire les URLs canoniques des produits affichés par cet élément de menu pour inclure l'alias de l'élément de menu parent.

Please Log in or Create an account to join the conversation.

  • Posts: 2596
  • Thank you received: 62
  • Hikashop Business
4 years 7 months ago #310083

1) c'est mon copie colle qui est faux
et comme je l'ai dis toutes mes url canoniques et alias sont remplies et fonctionnent parfaitement depuis 10 ans

chaussures est le nom SEF pour les produits, ce n'est pas un element de menu
il n' y a pas de nom sef pour les categories

un exemple :
produit id = 4634
alias = 4634-femme-grande-pointure
url canonique = /chaussures/4634-femme-grande-pointure

rien n'a jamais été déplacé , les categories sont toutes les memes au meme endroit depuis 10 ans

je n'ai aucune idee pour quoi ca ne marche pas et c'est dramatique pour le referencement

Last edit: 4 years 7 months ago by erickb.

Please Log in or Create an account to join the conversation.

  • Posts: 2596
  • Thank you received: 62
  • Hikashop Business
4 years 7 months ago #310084

Je viens de tester

url canonique = chaussures/5034-grande-taille-femmes

si je laisse hikashop générer les url sur l'ancien et le nouveau site j'ai dans les 2 cas :
79-nouveautes-chaussures-grande-taille-femmes/chaussures/5034-5034-grande-taille-femmes/page-79

et chaussures/5034-grande-taille-femmes ne marche que sur l'ancien


j'ai garde partout la meme structure et les memes alias afin de surtout ne pas perdre en referencement
actuellement toutes les url trouvees dans google ont une erreur 404 ... on peut fermer le site

Last edit: 4 years 7 months ago by erickb.

Please Log in or Create an account to join the conversation.

  • Posts: 81481
  • Thank you received: 13062
  • MODERATOR
4 years 7 months ago #310087

Donc dans le cas où "chaussure" est le nom SEF des produits, l'URL domaine.com/chaussures/5075-grande-taille-femmes ne peut fonctionner que si l'élément de menu par défaut du site est un listing de produits/catégories HikaShop.
Est-ce le cas ?
Si ce n'est pas le cas, alors c'est soit:
- que c'était un gros coup de chance que cela fonctionne avant
- que vous aviez une extension SEF qui faisait le lien entre l'URL canonique et l'URL fonctionnelle

Please Log in or Create an account to join the conversation.

  • Posts: 2596
  • Thank you received: 62
  • Hikashop Business
4 years 7 months ago #310098

c'était ca le problème , la page d'accueil avait un article

ca marche

merci

Last edit: 4 years 7 months ago by erickb.

Please Log in or Create an account to join the conversation.

  • Posts: 2596
  • Thank you received: 62
  • Hikashop Business
4 years 7 months ago #310134

ce problème résolu en genere un autre

la page d'accueil montre une liste de produits de la catégorie nouveautés , itemid de la page d'accueil = 105

autour des nouveautés je veux montrer des modules de categories (couleurs, ect ...) et uniquement sur la page d'accueil (donc sur temid = 105)

avec les liens non sef tout marche parfaitement et les modules ne s'affichent que sur la page d'accueil

mais en mode sef que je clique sur n'importe quel produit l'itemid sera toujours le 105 , donc je me retrouve avec tous les modules de la page d'accueil partout
j'ai pourtant modifie l'itemid du lien des produits en donnant un autre que le 105 mais rien n'y fait


comment regler ce probleme ?

merci

Last edit: 4 years 7 months ago by erickb.

Please Log in or Create an account to join the conversation.

  • Posts: 81481
  • Thank you received: 13062
  • MODERATOR
4 years 7 months ago #310143

Bonjour,

Avec le SEF activé, l'option "force canonical URLs on listings" est utilisée. Si le SEF est désactivé, alors cette option n'entre pas en jeu. C'est pour cela que vous n'avez pas le soucis avec le SEF désactivé.
Vu que vous voulez une URL canonique et que vous avez configuré l'URL canonique des produits pour utiliser l'élément de menu par défaut de votre site, alors peu importe d'où vous venez sur le site, c'est l'URL canonique qui sera utilisée pour la page produit et donc l'élément de menu par défaut.
Si vous ne voulez pas cela, alors vous voulez désactiver l'option "force canonical URLs on listings". Ainsi, l'URL de la page produit sera différente en fonction d'où vous y accédé et du coup cela pourra prendre en compte l'option "menu" de votre module pour modifier l'URL de la page produit.
Notez que cela ne changera rien pour votre SEO car le tag de l'URL canonique sera toujours avec l'URL canonique sur la page produit et donc google continuera de référencer la page avec l'URL que vous voulez.

The following user(s) said Thank You: erickb

Please Log in or Create an account to join the conversation.

  • Posts: 2596
  • Thank you received: 62
  • Hikashop Business
4 years 7 months ago #310161

Vous voulez dire que je dois choisir l'option : non generer les urls ?

en ce cas au lieu de
domaine.fr/chaussures/4999-grande-taille-femmes
j'ai
domaine.fr/chaussures/4999-4999-grande-taille-femmes
si j'enleve l'id des produits j'ai
domaine.fr/chaussures/p4999-grande-taille-femmes
el l'url canonique est bien
<link rel="canonical" href="domain.fr/chaussures/4999-grande-taille-femmes">

ca semble bien résoudre le problème partout sauf pour le listing de produits qui est sur la page d'accueil qui ne doit s'afficher que sur itemid=105
mais si je cliques ur un produit de la page d'accueil avec l'url domaine.fr/chaussures/4999-4999-grande-taille-femmes le detail du produits s'affiche mais tous les modules (qui ne doivent s'afficher que sur 105) aussi

les url que genere hikashop sont de type domaine.fr/chaussures/p4999-grande-taille-femmes
peut on enlever ce p ?
$link = hikashop_contentLink('product&task=show&cid=' . (int)$this->row->product_id . '&name=' . $this->row->alias . $this->itemid . $this->category_pathway, $this->row);

si je fais
$link = str_replace('p' . $this->row->product_id,$this->row->product_id, $link);

ca marche quand meme

merci

Last edit: 4 years 7 months ago by erickb.

Please Log in or Create an account to join the conversation.

  • Posts: 81481
  • Thank you received: 13062
  • MODERATOR
4 years 7 months ago #310165

Sur la page d'accueil, le listing des produits est généré par l'élément de menu actuel. Donc c'est normal que l'itemid (id de l'élément de menu actuel) ne change pas.
Si c'est un soucis pour vous, alors vous pouvez sélectionner une catégorie dépubliée de votre boutique dans l'option "main category" de votre élément de menu par défaut pour ne pas avoir de listing de produit dans la zone principale. Ensuite, vous pouvez utiliser un module de listing de produits pour afficher un listing similaire juste en dessous de la zone principale et vous aurez le contrôle de l'élément de menu des liens de ce listing avec l'option "menu" de ce module.
Vous pouvez alternativement utiliser du CSS pour cacher la zone principale sur la homepage, où tout simplement ne pas afficher la zone principale sur la homepage dans le index.php de votre template (certains templates ont même une option pour faire cela).

Concernant le p rajouté au début de l'URL, c'est parce que l'alias de votre élément de menu commence par un nombre. Si l'id de votre produit est 4999 et le nom de votre produit est "grande taille femmes", alors l'alias est sensé être "grande-taille-femmes" et non "4999-grande-taille-femmes".
Cela vous donnera soit l'URL:
domaine.fr/chaussures/4999-grande-taille-femmes
soit l'URL:
domaine.fr/chaussures/grande-taille-femmes
En fonction de si l'option "Remove products and categories id in URLs" est activée ou non.
Si votre alias est "4999-grande-taille-femmes", alors vous aurez soit l'URL:
domaine.fr/chaussures/4999-4999-grande-taille-femmes
soit l'URL:
domaine.fr/chaussures/p4999-grande-taille-femmes
en fonction de cette même option.
Le p est là pour éviter de confondre le numéro au début de l'alias avec l'id d'un autre produit, car quand la structure de l'URL fini par {nombre}-{texte} alors le routage sur la page produit considère que le {nombre} est l'id d'un produit.

Please Log in or Create an account to join the conversation.

  • Posts: 2596
  • Thank you received: 62
  • Hikashop Business
4 years 7 months ago #310176

merci pour ces precieuses infos

un listing de categorie depublie en page d'accueil ne marche pas, je met un module de listing des nouveautes à la place et si je clique sur un lien j'ai toujours l'itemid de la page d'accueil


pour le p ajoute
j'ai configure HK pour ajouter l'ID aux url et j'ai enlevé l'alias des produits
et maintenant j'ai
domaine.fr/chaussures/4999-pgrande-taille-femmes

Last edit: 4 years 7 months ago by erickb.

Please Log in or Create an account to join the conversation.

  • Posts: 81481
  • Thank you received: 13062
  • MODERATOR
4 years 7 months ago #310198

Bonjour,

1. Dans votre module, vous avez l'option "menu" pour sélectionner l'élément de menu que vous voulez. Si vous ne sélectionnez rien dans cette option, alors cela restera sur l'élément de menu courant si possible.
Aussi, cela n'est le cas que lorsque l'option "force canonical URLs on listings" est désactivée puisque quand elle est activée, c'est l'URL canonique qui est utilisée et donc l'option "menu" est ignorée.

2. vérifiez l'alias de ce produit. Je ne vois pas de raison pour que le p soit ajouté a cet endroit. Je n'ai jamais vu ça et lisant le code, je ne vois pas comment cela serait possible.

The following user(s) said Thank You: erickb

Please Log in or Create an account to join the conversation.

  • Posts: 2596
  • Thank you received: 62
  • Hikashop Business
4 years 7 months ago #310206

dans ma base de données tous mes alias sont renommes
4820-grandes-tailles-femme devient p4820-grandes-tailles-femme

je veux absolument éviter ca , ou est le code pour eviter ca ?

merci

Please Log in or Create an account to join the conversation.

  • Posts: 81481
  • Thank you received: 13062
  • MODERATOR
4 years 7 months ago #310208

Bonjour,

Ajoutez une entrée avec le namekey alias_prefix et une valeur vide dans la table hikashop_config et cela empêchera le rajout du "p".
Notez que pour les produits déjà avec un p dans l'alias, il vous faudra les modifier. Ce changement est uniquement pour que le "p" ne revienne pas.

Please Log in or Create an account to join the conversation.

  • Posts: 2596
  • Thank you received: 62
  • Hikashop Business
4 years 7 months ago #310218

Que je sélectionne l'element de menu que je veux ou un autre ou rien du tout , rien n'y fait, chaque lien sur un produit dans le listing me renvoi a l'itemid de la page d'accueil
Je n'ai aucune idée avec des URL SEF comment récupérer le vrai itemid , tous les modules sont toujours affiches sur la page d'accueil et meme en CSS il me faut bien une info , un repère , or je n'ai rien sinon passer dans l'url un #tag et le récupérer en javascript pour changer la class des modules en hidden, autant dire que c'est un infame bricolage
Je ne peux pas imaginer que ce soit la seule solution

Last edit: 4 years 7 months ago by erickb.

Please Log in or Create an account to join the conversation.

  • Posts: 81481
  • Thank you received: 13062
  • MODERATOR
4 years 7 months ago #310250

Pouvez vous confirmé que vous avez désactivé l'option "force canonical URLs on listings" ? Car si cette option est activée, alors c'est l'URL canonique qui est utilisée et cette URL utilise l'élément de menu principal et donc la page d'accueil.
Si l'option est désactivée, alors c'est le "menu" sélectionné dans le module qui est utilisé par le module, à moins que le menu sélectionné ne soit pas un élément de menu de type HikaShop products listing ou HikaShop categories listing. Si ce n'est pas le cas, alors le système se rabat sur l'élément de menu courant (et donc la page d'accueil).

Please Log in or Create an account to join the conversation.

  • Posts: 2596
  • Thank you received: 62
  • Hikashop Business
4 years 7 months ago #310262

voila ma config (utiliser les url canoniques si spécifiées)

Attachments:
Last edit: 4 years 7 months ago by erickb.

Please Log in or Create an account to join the conversation.

  • Posts: 2596
  • Thank you received: 62
  • Hikashop Business
4 years 7 months ago #310263

et tous mes produits ont exactement ce format




et tous les modules sont de type HikaShop Content Module (category ou product) ou les liens dans les menu joomla sont de types index.php?option=com_hikashop&view=category&layout=listing ou index.php?option=com_hikashop&view=product&layout=listing

la page par defaut du site est un index.php?option=com_hikashop&view=category&layout=listing

Attachments:
Last edit: 4 years 7 months ago by erickb.

Please Log in or Create an account to join the conversation.

  • Posts: 81481
  • Thank you received: 13062
  • MODERATOR
4 years 7 months ago #310275

Bonjour,

Du coup, dans votre capture d'écran, je vois que l'option "Forcer les URLs canoniques sur les listings" est activée.
Pouvez-vous la désactiver, en y sélectionnant "Non, générer les URLs" ?
Car sinon, comme expliqué précédemment, l'option "menu" de vos modules est ignorée et c'est l'URL canonique qui est utilisée, qui justement utilise l'élément de menu de votre page d'accueil...

Please Log in or Create an account to join the conversation.

  • Posts: 2596
  • Thank you received: 62
  • Hikashop Business
4 years 7 months ago #310281

l'url canonique des le debut a été considéré comme une rustine (faute de mieux) et si je laisse hk générer les URL je suis repartis pour 50 ou 100 urls différentes pour chaque produit
je ne peux imaginer qu'il n'y ait une alternative pour avoir une seule url propre par produit et bien sur pointant sur un itemid autre que la page d'accueil
il suffirait de 3 itemid pour tout : listing des categories des marques et des produits
j'ai d'ailleurs fais 3 hk default menus pour ca , mais si je fais pointer le jform[params][hikashopmodule][itemid] sur un de ces id ca ne marche pas non plus , ca marche pour les categories mais pas du tout pour les produits, des que je clique sur un produit c'est a nouveau la page d'accueil

pourtant vous dites (mais ca ne marche jamais)

Si l'option est désactivée, alors c'est le "menu" sélectionné dans le module qui est utilisé par le module, à moins que le menu sélectionné ne soit pas un élément de menu de type HikaShop products listing ou HikaShop categories listing


en attendant mieux je fais
	$router =& JSite::getRouter();
	$var = $router->getVars();
	$full_url =   JURI::buildQuery($router->getVars()); 
	$parse = parse_str( $full_url, $get_array);
   
	$option = $get_array['option'];
	$ctrl = $get_array['ctrl'];

if($option == 'com_hikashop' && $ctrl == 'product'){
		   $itemid  = JText::_('PRODUCT_ITEMID');
	   }
	   if($option == 'com_hikashop' && $ctrl == 'category'){
		   $itemid  = JText::_('CATEGORY_ITEMID');
	   }
et je regle ca en css
body.body-123, body.body-124{
	#aside-top, #aside-bottom{
		display: none !important;
	}


mais je ne vous embête pas davantage, ca marche comme ca

Last edit: 4 years 7 months ago by erickb.

Please Log in or Create an account to join the conversation.

Time to create page: 0.099 seconds
Powered by Kunena Forum