Aller au contenu

Osc urlrewriting


michmuch51

Sujets conseillés

Salut les Hubiens,

je viens de mettre en place une boutique sous osc qui n'est pour le moment pas accessible avant que je n'ai tout fixé, mais je galère sur la mise en place d'une contrib pour le rewriting:

contribution rewriting

visiblement elle fonctionne très bien en tout cas mes liens sont réécris de façon sympa, j'ai du modifier le htaccess pour l'adapter à ovh (en rajoutant simplement le nom du répertoire):

RewriteEngine on
Options +FollowSymLinks

RewriteRule ^(en/.*)$ /monrepertoire/url_rewriting.php?$1 [L]
RewriteRule ^(de/.*)$ /monrepertoire/url_rewriting.php?$1 [L]
RewriteRule ^(es/.*)$ /monrepertoire/url_rewriting.php?$1 [L]
RewriteRule ^(fr/.*)$ /monrepertoire/url_rewriting.php?$1 [L]

comme je vous ai dit les liens sur osc sont de la forme souhaitée:

http://www.monsite/monrepertoire/monnomdecategorie

mais le problème c'est que lorsque je clique sur ces fameux liens ca me redirige vers:

http://www.monsite/monrepertoire/index.php?cPath=12 (par exemple pour la categorie 12) alors que dans le code source ils sont réécris

est ce qu'a votre avis le soucis viens du htaccess ou du fichier url_rewriting.php?

Source de url_rewriting (en espérant que ca rende pas le post indigeste):

<?php
require('includes/application_top.php');

$get_array = explode('/', key($_GET));
$lang_code = $get_array[0];
$lang = tep_db_fetch_array(tep_db_query("select languages_id from " . TABLE_LANGUAGES . " where code = '" . tep_db_input($lang_code) . "'"));
$lang_id = $lang['languages_id'];
$parent_id = 0;

if (empty($lang_id)) tep_redirect(HTTP_SERVER . DIR_WS_HTTP_CATALOG . FILENAME_DEFAULT);

for ($i=1; $i<sizeof($get_array); $i++) {

 if (ereg("(.+)_html$", $get_array[$i], $regs)) { // is a product
 
 $product_name = $regs[1];
 if (ereg("-p([0-9]+)$", $product_name, $regs)) {
   $product_id = $regs[1];
 } else {
   $products_query = tep_db_query("select products_id from " . TABLE_PRODUCTS_TO_CATEGORIES . " where categories_id = '" .(int)$parent_id . "'");
   $products_array = array();
   while ($products = tep_db_fetch_array($products_query)) {
   $products_array[] = $products['products_id'];
   }
   foreach ($products_array as $product_id) {
   if ($product_name == tep_url_rewriting_cast(tep_get_products_name($product_id, $lang_id))) {
     // $product_id
     break;
   }
   }
 }
 tep_redirect(HTTP_SERVER . DIR_WS_HTTP_CATALOG . FILENAME_PRODUCT_INFO . '?cPath=' . $cPath . '&products_id=' . $product_id);

 } else { // is a category

 if (ereg("-c([0-9]+)$", $get_array[$i], $regs)) {
   $parent_id = $regs[1];
 } else {
   $categories_query = tep_db_query("select categories_id from " . TABLE_CATEGORIES . " where parent_id = '" .(int)$parent_id . "'");
   $categories_array = array();
   while ($categories = tep_db_fetch_array($categories_query)) {
   $categories_array[] = $categories['categories_id'];
   }
   foreach ($categories_array as $parent_id) {
   if ($get_array[$i] == tep_url_rewriting_cast(tep_get_categories_name($parent_id, $lang_id))) {
     // $parent_id
     break;
   }
   }
 }
 if ($i == 1) $cPath = $parent_id;
 else $cPath .= '_' . $parent_id;
 
 }

}
tep_redirect(HTTP_SERVER . DIR_WS_HTTP_CATALOG . FILENAME_DEFAULT . '?cPath=' . $cPath);
?>

Lien vers le commentaire
Partager sur d’autres sites

le problème c'est que lorsque je clique sur ces fameux liens ca me redirige vers:

http://www.monsite/monrepertoire/index.php?cPath=12 (par exemple pour la categorie 12) alors que dans le code source ils sont réécris

est ce qu'a votre avis le soucis viens du htaccess ou du fichier url_rewriting.php?

Bonjour,

En tout cas, il n'y a aucune redirection dans le .htaccess, juste de la réécriture d'URL.

Jean-Luc

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...