web-dev-qa-db-fra.com

Comment configurer Joomla ou Apache pour les URL SEF v1?

J'ai le grand plaisir de mettre à jour un site Joomla 1. vers la v3.5 (aucun commentaire de la galerie Peanut s'il vous plaît , lol ). Globalement, tout se passe bien, mais l'ancienne version de l'écriture des URL SEF est assez différente de celle de la version 3, et je ne suis pas un expert en Apache/htaccess.

La grande majorité des liens les plus préoccupants sont ceux qui utilisent un composant personnalisé pour les produits vendus. tel que cela:

www.example.com/component/option,com_virtuemart/page,shop.product_details/flypage,shop.flypage/product_id,1/category_id,1/manufacturer_id,0/Itemid,59

Il existe de nombreux liens Joomla de base tels que celui-ci, qui devraient être convertis, mais sont moins critiques:

www.example.com/content/view/106/159/

Ce sont les deux ensembles de .htaccess actuellement utilisés. J'ai essayé de placer la section SEF v1 dans le nouveau fichier .htaccess, mais cela interfère avec Workinig v3.5 et les erreurs 404 semblent persister.

## Begin - Joomla! v1.0 SEF Section (from old site).
RewriteCond %{REQUEST_URI} ^(/component/option,com) [NC,OR]
RewriteCond %{REQUEST_URI} (/|\.htm|\.php|\.html|/[^.]*)$  [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php
## End - Joomla v1 SEF Section.

## Begin - Joomla! v3.5 core SEF Section.
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteCond %{REQUEST_URI} !^/index\.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [L]
## End - Joomla! core SEF Section.

Dans l'état actuel des choses, tous les liens ci-dessus entraînent une erreur 404; la solution "simpliste" la plus simple que je puisse imaginer (mais je ne sais pas comment procéder) consiste à créer un dossier nommé \component (singulier) et dans cet usage .htaccess et mod_rewrite d’une manière que Apache va analyser, en capturant la "chaîne de requête", et rediriger de la même manière vers un composant personnalisé dans lequel nous gérons tous les problèmes de conversion et redirigeons en conséquence:

www.example.com/component/option,com_virtuemart/.../Itemid,59 réécrit en www.example.com/index.php?option=com_mycomponent&...&Itemid=59

Est-ce une approche pratique, et si oui, à quoi ressemblerait le .htaccess, et si non, y a-t-il une autre solution dont je ne suis pas au courant (documentation pas beaucoup plus fiable sur J1.0)

4
GDP

J'ai réussi à rassembler une solution sans utiliser .htaccess, bien qu'une solution plus propre m'intéresse si quelqu'un en a un.

  1. J'ai créé un plugin système qui ne fait vraiment rien au sens conventionnel, en ce sens qu'il n'a pas de méthode sauf _construct ().
  2. Dans la méthode _construct(), j'ai simplement vérifié les chaînes de l'URI trouvées dans les anciens liens et propres à Joomla v1.
  3. Si trouvé, il a analysé la chaîne bizarre de Joomla SEF en quelque chose d’utilisable. Avec cela, j'ai construit la nouvelle URL J3.5 dont j'ai besoin, et utilisé $app->redirect() pour y envoyer l'utilisateur.

Je ne suis pas amoureuse de ça, mais ça marche.

4
GDP