Comprends rien ...

WRInaute discret
Bonjour à tous,

Je me lance dans le rewriting et la, je crois que les 2 seuls neurrones qui me restent sont en train de partir en courant.

J'explique :

Sur mon site les url sont comme ceci : http://www.monsite.com/index.php?cPath=87 ou http://www.monsite.com/index.php?cPath=87_27 ou encore http://www.monsite.com/product_info.php ... ucts_id=94

J'ai mis dans le .htaccess (pour la première forme d'Url)

Options +FollowSymlinks
RewriteEngine on
RewriteRule ^produit-([0-9]+)\.html$ index.php?cPath=$1 [L]

Donc, lorsque l'on tape http://www.monsite.com/produit-xxxxx.html , on va à l'adresse php correspondante. OK, mais il ne faudrais faire l'inverse ? Pour le référencement ?

Merci
 
WRInaute discret
Argh ..... j'ai loupé un truc la ....

Dans l'exemple ci dessus, personne ne peut connaître l'existence de cette adresse, elle n'est déclarée nulle part ......

Les seules adresses de mon site sont du type php .....

Comprends plus la 8O
 
WRInaute impliqué
Je ne dirais pas vraiment ça comme ça, je dirais plutot que le rewriting sert à mettre des variables dans un nom de fichier et non sous la forme xxx.php?mavar1=valeur1&mavar2=valeur2 ainsi Google n'a pas l'impression qu'il s'agisse d'une page dynamique avec des variables et il a tendence à préférer ça. On me corrigera si je me trompe.
 
WRInaute occasionnel
Salut

L'url rewriting c'est juste un système pour que l'adresse A aille en réalité sur l'adresse B.

Si tu veux que s'affiche que des adresses HTML dans les nagivateurs de tes internautes alors tu dois changer tout tes les liens en versions HTML.

Lors que l'internaute clique sur un lien de ton site HTML, il va être soumis au regle de l'url rewriting et le serveur va comprendre qu'il faut lire tel fichier (généralement PHP)

Pour le referencement tu as plusieurs solutions. Soi tu attends un full crawl de Google (tout les mois, mois 1/2 si je ne me trompe) soit tu utilises un code pour faire redirigier tes adresses PHP vers tes adresses HTML (avec un code 301) SEULEMENT SI l'adresse de la requete contient un fichier PHP (sinon tu boucles )

je ne sais pas si je t'ai donné des réponses :lol:
 
WRInaute discret
Euh ... oui,

Par contre,
Pour le referencement tu as plusieurs solutions. Soi tu attends un full crawl de Google (tout les mois, mois 1/2 si je ne me trompe) soit tu utilises un code pour faire redirigier tes adresses PHP vers tes adresses HTML (avec un code 301) SEULEMENT SI l'adresse de la requete contient un fichier PHP (sinon tu boucles )
si tu peux m'eclaicir pour ça ?
 
Olivier Duffez (admin)
Membre du personnel
au fait, as-tu lu l'article de présentation de l'URL Rewriting ?
j'ai écrit entre autres :
URL Rewriting : les étapes pour la mise en place
1- Vérifier que votre hébergeur permet l'utilisation de l'URL Rewriting. Si vous êtes chez un hébergeur gratuit qui ne le gère pas, c'est une très bonne raison pour franchir le cap et bénéficer de tous les avantages d'un hébergement professionnel (ça ne coûte pas grand chose...)
2- Identifier les pages dynamiques dont l'URL comporte des paramètres, et choisir un nouveau schéma d'URL "propre"
3- Ecrire les règles de réécriture dans le fichier .htaccess
4- Changer tous les liens vers chaque fichier dont l'URL a changé
5- Mettre à jour votre site et vérifier que tout fonctionne
tu n'as pas fait l'étape 4 ?
 
WRInaute discret
Oh tiens c'est encore en ligne ça ? :?

WebRankInfo, il faudrait que tu vérifies les liens "pour aller plus loin" au bas de cette page ;-)
 
WRInaute occasionnel
patotoche65 a dit:
Pour le referencement tu as plusieurs solutions. Soi tu attends un full crawl de Google (tout les mois, mois 1/2 si je ne me trompe) soit tu utilises un code pour faire redirigier tes adresses PHP vers tes adresses HTML (avec un code 301) SEULEMENT SI l'adresse de la requete contient un fichier PHP (sinon tu boucles )
si tu peux m'eclaicir pour ça ?

Alors là il faudrait que des experts confirment mes dires :lol: Mais je pense que si tu rediriges tes anciennes adresses (en PHP) vers les nouvelles HTML, les moteurs de recherche mettront peut être plus vite à jour leur base de donnée.

Je ne sais pas si tu connais le PHP mais c'est la seule solution en mutualisé. Il faut regarder la variable REQUEST_URI qui est l'adresse demandé (une partie sans le nom de domaine).

Si l'adresse demandée est de type .php alors tu rediriges avec un Header 301 vers ton adresse HTML.

Si l'adresse demandée est de type HTML alors tu ne fais rien.

Ainsi voilà ce qu'ils se passe.

a) Si un internaute arrive chez toi par une adresse HTML, le URL rewriting dit au serveur qu'il faut se servir de telle adresse PHP, dans ton script PHP le REQUEST_URI contiendra l'adresse HTML (celle demandée par l'internaute) donc ne referra pas de redirection donc executera et affichera la page.

b) S'il arrive par une adresse PHP, le URL rewriting ne fonctionne pas, le script PHP detecte une adresse PHP (l'adresse demandée est de type php), il redirige alors vers l'adresse HTML et tu reviens en a)

En fait le script php se borne à faire l'envers de ce que tu fais dans l'url rewriting.
 
WRInaute discret
Pour le B je propose plutôt d'utiliser quand même l'url rewriting avec une redirection 301, querlque chose du genre:
Code:
RewriteCond %{QUERY_STRING} !^$
RewriteRule ^index.php$ produit-%{QUERY_STRING}.html [C]
RewriteRule ^produit-.*cPath=([0-9]+)(&.*)?.html produit-$1.html [r=301]
Mais bon évidemment il faut voir quel est ta représentation des paramètres dans les urls...
(tiens, j'ai un doute sur le [C] là, mais je vais poser ma question ailleurs: là où j'en ai besoin :roll:)

Enfin, sinon si tu le fais quand même avec php, je te conseille plutôt d'utiliser e tableau $_Get ce sera plussimple ;-)
 
WRInaute occasionnel
Ah oui Lord c'est vrai que l'on peut le faire aussi dans le htaccess, tout en mettant les rewrite HTML en première position et ne pas oublier le flag [L]
 
WRInaute discret
Salut à tous et merci de vos réponses à un newbie comme moi ...,

bon j'ai pas mal avancé,

Voici ce que j'avais au départ :
http://www.monsite.com/index.php?cPath=51&osCsid=43346cea00c0fad26d8b9845a1a98457

Voici ce que j'ai maintenant :
http://www.monsite.com/Consommables

Il me faudrais donc :
http://www.monsite.com/Consommables.html

Il me manque juste le .html à la fin .... Mais je sais pas comment faire .... :oops:

Voici les codes permettant ce résultat :
$separator = '?';
if (tep_not_null($parameters)) {
$product_name = '';
switch ($page) {
case FILENAME_PRODUCT_INFO:
case FILENAME_DEFAULT:
$manufacturer_name = '';
$product_name = '';
$new_parameter_list = array();
$cPath_list = array();
foreach (explode('&', $parameters) as $pair) {
global $languages_id;
$pair_array = explode('=', $pair);
switch ($pair_array[0]) {
case 'action':
$link .= $page . '?' . tep_output_string($parameters);
$separator = '&';
break 3;
case 'cPath':
$parent_id = 0;
foreach (explode('_', $pair_array[1]) as $category_id) {
$category_name_query = tep_db_query("select cd.categories_name from categories_description cd, categories c where cd.categories_id=c.categories_id and cd.categories_id='" . (int)$category_id . "' and cd.language_id='" . (int)$languages_id . "' and c.parent_id='" . (int)$parent_id . "'");
if ($category_name_array = tep_db_fetch_array($category_name_query)) {
$cPath_list[]= urlencode($category_name_array['categories_name']);
$parent_id = $category_id;
}
}
break;
case 'products_id':
$product_name_query = tep_db_query("select products_name from products_description where products_id='" . (int)$pair_array[1] . "' and language_id='" . (int)$languages_id . "'");
if ($product_name_array = tep_db_fetch_array($product_name_query)) {
$product_name = $product_name_array['products_name'];
}
break;
case 'manufacturers_id':
$manufacturer_name_query = tep_db_query("select manufacturers_name from " . TABLE_MANUFACTURERS . " where manufacturers_id='" . (int)$pair_array[1] . "'");
if ($manufacturer_array = tep_db_fetch_array($manufacturer_name_query)) {
$manufacturer_name = $manufacturer_array['manufacturers_name'];
}
break;
case '':
break;
default:
if (tep_not_null($pair)) $new_parameter_list[]= $pair;
}
}
if (tep_not_null($manufacturer_name)) {
$cPath_list[]= urlencode($manufacturer_name);
}
if (tep_not_null($product_name)) {
$cPath_list[]= urlencode($product_name);
}
$separator = '?';
$link .= preg_replace('/%2F/', '%20', implode('/', $cPath_list));
if (tep_not_null($new_parameter_list)) {
$link .= $separator . implode('&', $new_parameter_list);
$separator = '&';
}
break;
default:
$link .= $page . '?' . tep_output_string($parameters);
$separator = '&';
}
} else {
$link .= $page;
$separator = '?';
}

Et :
include('includes/application_top.php');

if ($REQUEST_URI == '') {
tep_redirect(tep_href_link(FILENAME_DEFAULT));
}

if ($REQUEST_TYPE == 'SSL') {
$comparison_array = explode('/', HTTPS_SERVER . DIR_WS_HTTPS_CATALOG, 4);
} else {
$comparison_array = explode('/', HTTP_SERVER . DIR_WS_HTTP_CATALOG, 4);
}
$comparison = $comparison_array[3];

$parts = explode('?', str_replace($comparison, '', $REQUEST_URI), 2);
$list = explode('/', preg_replace(array('#^/#', '#/$#'), '', $parts[0]));
if (sizeof($parts) == 2) {
$parameters = explode('&', $parts[1]);
foreach ($parameters as $pair) {
$pieces = explode('=', $pair);
$HTTP_GET_VARS[$pieces[0]] = $pieces[1];
}
}
$current_category_id = 0;
$cPath_array = array();
$count = 0;
foreach ($list as $piece_encoded) {
$count++;
$piece = urldecode(preg_replace(array('/[+]/', '/%20/'), array(' ', '%2F'), $piece_encoded));
if ($piece == 'catalog') {
continue;
}
$query_string = "select cd.categories_id from categories_description cd, categories c where cd.categories_id=c.categories_id and cd.categories_name='" . tep_db_input($piece) . "' and c.parent_id='" . (int)$current_category_id . "'";
$category_query = tep_db_query("select cd.categories_id from categories_description cd, categories c where cd.categories_id=c.categories_id and cd.categories_name='" . tep_db_input($piece) . "' and c.parent_id='" . (int)$current_category_id . "'");
if ($category_array = tep_db_fetch_array($category_query)) {
$cPath_array[]= $category_array['categories_id'];
$breadcrumb->add($piece, tep_href_link(FILENAME_DEFAULT, 'cPath=' . implode('_', $cPath_array)));
$current_category_id = $category_array['categories_id'];
} else {
if ($current_category_id != '0') {
$parent_where_string = " and p2c.categories_id='" . (int)$current_category_id . "'";
} else {
$parent_where_string = '';
}
$product_query = tep_db_query("select pd.products_id from products_description pd, products_to_categories p2c, products p where p.products_id = pd.products_id and p.products_status = '1' and pd.products_id=p2c.products_id and pd.products_name='" . tep_db_input($piece) . "'" . $parent_where_string);
if ($product_array = tep_db_fetch_array($product_query)) {
if (sizeof($cPath_array) < 1) {
$cPath = tep_get_product_path($product_array['products_id']);
$cPath_array = explode('_', $cPath);
for ($i=0, $n=sizeof($cPath_array); $i<$n; $i++) {
$categories_query = tep_db_query("select categories_name from " . TABLE_CATEGORIES_DESCRIPTION . " where categories_id = '" . (int)$cPath_array[$i] . "' and language_id = '" . (int)$languages_id . "'");
if (tep_db_num_rows($categories_query) > 0) {
$categories = tep_db_fetch_array($categories_query); $breadcrumb->add($categories['categories_name'], tep_href_link(FILENAME_DEFAULT, 'cPath=' . implode('_', array_slice($cPath_array, 0, ($i+1)))));
} else {
break;
}
}
} else {
$cPath = implode('_', $cPath_array);
}
$breadcrumb->add($piece, tep_href_link(FILENAME_PRODUCT_INFO, 'cPath=' . $cPath . '&products_id=' . $product_array['products_id']));
$HTTP_GET_VARS['products_id'] = $product_array['products_id'];
$PHP_SELF_REWRITE = dirname($PHP_SELF) . '/' . FILENAME_PRODUCT_INFO;
$PHP_SELF = $PHP_SELF_REWRITE;
include(FILENAME_PRODUCT_INFO);
exit();
} else {
$manufacturer_query = tep_db_query("select manufacturers_id from manufacturers where manufacturers_name='" . tep_db_input($piece) . "'");
if ($manufacturer_array = tep_db_fetch_array($manufacturer_query)) {
$breadcrumb->add($piece, tep_href_link(FILENAME_DEFAULT, 'cPath=' . implode('_', $cPath_array) . 'manufacturers_id=' . (int)$manufacturers_array['manufacturers_id']));
$HTTP_GET_VARS['manufacturers_id'] = $manufacturer_array['manufacturers_id'];
if ($count == sizeof($list)) {
$HTTP_GET_VARS['filter_id'] = $current_category_id;
$PHP_SELF_REWRITE = dirname($PHP_SELF) . '/' . FILENAME_DEFAULT;
$PHP_SELF = $PHP_SELF_REWRITE;
$cPath = implode('_', $cPath_array);
$HTTP_GET_VARS['cPath'] = $cPath;
include(FILENAME_DEFAULT);
exit();
}
} else {
reset($list);
tep_redirect(tep_href_link(FILENAME_ADVANCED_SEARCH_RESULT, 'keywords=' . implode('+', $list)));
}
}
}
}
$cPath = implode('_', $cPath_array);
$HTTP_GET_VARS['cPath'] = $cPath;
$PHP_SELF_REWRITE = dirname($PHP_SELF) . '/' . FILENAME_DEFAULT;
$PHP_SELF = $PHP_SELF_REWRITE;
include(FILENAME_DEFAULT);


?>

Si QQun a une idée .....

Merci
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut