Comprends rien ...

Consultez la formation URL Rewriting et sites dynamiques de WebRankInfo / Ranking Metrics


patotoche65
WRInaute discret
WRInaute discret
 
Messages: 72
Inscription: 3 Mai 2004

Comprends rien ...

Message le Dim Mai 09, 2004 16:49

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

squawk
WRInaute accro
WRInaute accro
 
Messages: 5985
Inscription: 22 Mar 2004

Message le Dim Mai 09, 2004 16:57

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 ?


Ben non, si tout tes liens sont en .html, google ne vera que ces adresses et indexera les adresses en .html.

SquawK


patotoche65
WRInaute discret
WRInaute discret
 
Messages: 72
Inscription: 3 Mai 2004

Message le Dim Mai 09, 2004 17:02

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

Lord Farquaad
WRInaute discret
WRInaute discret
 
Messages: 124
Inscription: 1 Mai 2004

Message le Dim Mai 09, 2004 17:11

Lol ben il faut alors que tu corriges tous tes liens ;-)


patotoche65
WRInaute discret
WRInaute discret
 
Messages: 72
Inscription: 3 Mai 2004

Message le Dim Mai 09, 2004 17:13

Yes, c'est bien cela ....

Comprends mieu pourquoi ......


patotoche65
WRInaute discret
WRInaute discret
 
Messages: 72
Inscription: 3 Mai 2004

Message le Dim Mai 09, 2004 17:29

Re,

Donc le rewriting permet de faire du php avec du html mais pas l'inverse ?


deweerdt
WRInaute impliqué
WRInaute impliqué
 
Messages: 912
Inscription: 12 Aoû 2003

Message le Dim Mai 09, 2004 18:04

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.


macjee
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 411
Inscription: 29 Avr 2003

Message le Dim Mai 09, 2004 18:09

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:


patotoche65
WRInaute discret
WRInaute discret
 
Messages: 72
Inscription: 3 Mai 2004

Message le Dim Mai 09, 2004 18:22

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 ?


WebRankInfo
Administrateur du site
Administrateur du site
 
Messages: 19415
Inscription: 19 Avr 2002

Message le Dim Mai 09, 2004 18:24

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 ?

Lord Farquaad
WRInaute discret
WRInaute discret
 
Messages: 124
Inscription: 1 Mai 2004

Message le Dim Mai 09, 2004 19:24

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 ;-)


macjee
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 411
Inscription: 29 Avr 2003

Message le Dim Mai 09, 2004 20:11

patotoche65 a écrit:
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.

Lord Farquaad
WRInaute discret
WRInaute discret
 
Messages: 124
Inscription: 1 Mai 2004

Message le Dim Mai 09, 2004 20:31

Pour le B je propose plutôt d'utiliser quand même l'url rewriting avec une redirection 301, querlque chose du genre:
Code: Tout sélectionner
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 ;-)


macjee
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 411
Inscription: 29 Avr 2003

Message le Lun Mai 10, 2004 8:11

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]


patotoche65
WRInaute discret
WRInaute discret
 
Messages: 72
Inscription: 3 Mai 2004

Message le Mar Mai 11, 2004 12:30

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


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Formation recommandée sur ce thème :

Formation URL Rewriting et sites dynamiques : apprenez comment mettre en place la réécriture d'URL, comment optimiser vos URL et profiter de vos pages dynamiques pour booster votre référencement. Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités