Url rewriting et les forum simple machines ( smf )
7 messages • Page 1 sur 1
Consultez la formation URL Rewriting et sites dynamiques de WebRankInfo / Ranking Metrics
Url rewriting et les forum simple machines ( smf )
Bonjours à tous les coders.
2 jours que je passe sur le forum smf pour trouver la solution mais, rien ...... j'ai scrutté webrankinfo ...... rien.
Parlons du rewriting et des forums smf. Apremière vue tout est simple , juste une case à cocher et c'est bon. ( encore faut -il que le serveur supporte le mod_rewrite scrutable avec la fonction phpinfo()
Donc moi cela ne marche pas, pourtant je suis presque arrivé au but.
Le code de base de la réécriture d'url dans les forums smf se trouve : forum_smf/source/QueryString.php ( c'est la derniere fonction tout en bas )
elle donne :
Chez moi elle ne marche pas .......
Les urls sont toujours sous forme de :
http://www.brakstar.com/forum/index.php?board=19.0
alors que je voudrai qu'elle soit sous la forme ( pour l'instant ) :
http://www.brakstar.com/forum/index.php/topic,1628.html
Après avoir lu un tutorial de Mr [Unknow]
J'ai remplacé la fonction ci dessus par :
Et la ça à presque marché !
J'avais des pages sous forme :
http://www.brakstar.com/forum/index.php/topic,1628.html
mais malheureusement sur tousles urls rewrités il y avait une erreur 404 ( page inconnue au bataillon.
J'ai aussi mis un .htacces dans forum/
avec ce code :
Mais rien ne fais ... erreur 404
version du forum : 1.1 beta 3 public
Pourriez vous m'aider 
2 jours que je passe sur le forum smf pour trouver la solution mais, rien ...... j'ai scrutté webrankinfo ...... rien.
Parlons du rewriting et des forums smf. Apremière vue tout est simple , juste une case à cocher et c'est bon. ( encore faut -il que le serveur supporte le mod_rewrite scrutable avec la fonction phpinfo()
Donc moi cela ne marche pas, pourtant je suis presque arrivé au but.
Le code de base de la réécriture d'url dans les forums smf se trouve : forum_smf/source/QueryString.php ( c'est la derniere fonction tout en bas )
elle donne :
- Code: Tout sélectionner
// Rewrite URLs to include the session ID.
function ob_sessrewrite($buffer)
{
global $scripturl, $modSettings, $user_info, $context;
// If $scripturl is set to nothing, or the SID is not defined (SSI?) just quit.
if ($scripturl == '' || !defined('SID'))
return $buffer;
// Do nothing if the session is cookied, or they are a crawler - guests are caught by redirectexit(). This doesn't work below PHP 4.3.0, because it makes the output buffer bigger.
if (empty($_COOKIE) && SID != '' && (!$user_info['is_guest'] || (strpos($_SERVER['HTTP_USER_AGENT'], 'Mozilla') !== false || strpos($_SERVER['HTTP_USER_AGENT'], 'Opera') !== false)) && @version_compare(PHP_VERSION, '4.3.0') != -1)
$buffer = preg_replace('/"' . preg_quote($scripturl, '/') . '(?!\?' . preg_quote(SID, '/') . ')(\?)?/', '"' . $scripturl . '?' . SID . ';', $buffer);
// This should work even in 4.2.x, just not CGI.
if (!empty($modSettings['queryless_urls']) && (!$context['server']['is_cgi'] || @ini_get('cgi.fix_pathinfo') == 1) && $context['server']['is_apache'])
{
// Let's do something special for session ids!
if (defined('SID') && SID != '')
$buffer = preg_replace('/"' . preg_quote($scripturl, '/') . '\?(?:' . SID . ';)((?:board|topic)=[^#"]+?)(#[^"]*?)?"/e', "'\"' . \$scripturl . '/' . strtr('\$1', '&;=', '//,') . '.html?' . SID . '\$2\"'", $buffer);
else
$buffer = preg_replace('/"' . preg_quote($scripturl, '/') . '\?((?:board|topic)=[^#"]+?)(#[^"]*?)?"/e', "'\"' . \$scripturl . '/' . strtr('\$1', '&;=', '//,') . '.html\$2\"'", $buffer);
}
// Return the changed buffer.
return $buffer;
}
Chez moi elle ne marche pas .......
Les urls sont toujours sous forme de :
http://www.brakstar.com/forum/index.php?board=19.0
alors que je voudrai qu'elle soit sous la forme ( pour l'instant ) :
http://www.brakstar.com/forum/index.php/topic,1628.html
Après avoir lu un tutorial de Mr [Unknow]
J'ai remplacé la fonction ci dessus par :
- Code: Tout sélectionner
// Rewrite URLs to include the session ID.
function ob_sessrewrite($buffer)
{
global $scripturl, $modSettings, $user_info, $context;
// If $scripturl is set to nothing, or the SID is not defined (SSI?) just quit.
if ($scripturl == '' || !defined('SID'))
return $buffer;
// Do nothing if the session is cookied, or they are a crawler - guests are caught by redirectexit(). This doesn't work below PHP 4.3.0, because it makes the output buffer bigger.
if (empty($_COOKIE) && SID != '' && (!$user_info['is_guest'] || (strpos($_SERVER['HTTP_USER_AGENT'], 'Mozilla') !== false || strpos($_SERVER['HTTP_USER_AGENT'], 'Opera') !== false)))
$buffer = preg_replace('/"' . preg_quote($scripturl, '/') . '(?!\?' . preg_quote(SID, '/') . ')(\?)?/', '"' . $scripturl . '?' . SID . '&', $buffer);
// You can't do both, because session_start() won't catch the session if you do. But this should work even in 4.2.x, just not CGI.
else
$buffer = preg_replace('/"' . preg_quote($scripturl, '/') . '\?((?:board|topic)=[^#"]+)(#[^"]*)?"/e', "'\"' . \$scripturl . '/' . strtr('\$1', '&;=', '//,') . '.html\$2\"'", $buffer);
// Return the changed buffer.
return $buffer;
}
Et la ça à presque marché !
J'avais des pages sous forme :
http://www.brakstar.com/forum/index.php/topic,1628.html
mais malheureusement sur tousles urls rewrités il y avait une erreur 404 ( page inconnue au bataillon.
J'ai aussi mis un .htacces dans forum/
avec ce code :
- Code: Tout sélectionner
RewriteEngine On
RewriteRule ^topic-([^/]+)[/]?$ /forum/index.php?topic=$1
RewriteRule ^board-([^/]+)[/]?$ /forum/index.php?board=$1
Mais rien ne fais ... erreur 404
version du forum : 1.1 beta 3 public
Voici le tutorial pour VRAIMENT réécrire les urls D'un forum SMF 1.1 Béta 3 Publique !
avoir de urls sous forme :
http://www.serveur.com/forum/board-11.0
( niveau du tutos : moyen quand vous avez la solution ! et vous l'avez ! )
Donc suposons que vous avez un forum smf ayant cette url :
http://www.serveur.com/forum/
Premiere chose :
Remplacer la derniere fonction de http://www.serveur.com/forum/source/QueryString.php qui se présente sous forme :
par :
ensuite ajouter cette ligne à http://www.serveur.com/forum/index.php :
juste après :
Ligne 37 environ
ensuite :
Editez ces 3 fichiers :
Sources/BoardIndex.php
Sources/Display.php
Sources/MessageIndex.php
Remplacer les expressions contenant :
par :
puis toujours dans ces fichiers
par :
Ensuite rechercher dans vos fichiers ****.template.php et vos 3 fichiers sources précédement modifiés les codes contenant :
remplacer les par :
idem pour les codes contenant :
changer par :
ensuite il faudra déclarer la variable globale dans vos fichiers ****.template.php comme ceci
déclarer partout ou cela est néccéssaire.
déclaré la aussi dans display.php ces lignes sont en générale en haut de page mais méfiez vous.
puis configurez votre .htaccess placé dans votre repertoir : /forum/ de cette façon ( ceci peut varier selon les différents serveurs moi c'est papache ) :
et voila mes amis vos urls seront sous forme de :
http://www.serveur.com/forum/board-11.0
et vos topics :
http://www.serveur.com/forum/topic-72.0
a+ les amigos

avoir de urls sous forme :
http://www.serveur.com/forum/board-11.0
( niveau du tutos : moyen quand vous avez la solution ! et vous l'avez ! )
Donc suposons que vous avez un forum smf ayant cette url :
http://www.serveur.com/forum/
Premiere chose :
Remplacer la derniere fonction de http://www.serveur.com/forum/source/QueryString.php qui se présente sous forme :
- Code: Tout sélectionner
// Rewrite URLs to include the session ID.
function ob_sessrewrite($buffer)
{
global $scripturl, $modSettings, $user_info, $context;
// If $scripturl is set to nothing, or the SID is not defined (SSI?) just quit.
if ($scripturl == '' || !defined('SID'))
return $buffer;
// Do nothing if the session is cookied, or they are a crawler - guests are caught by redirectexit(). This doesn't work below PHP 4.3.0, because it makes the output buffer bigger.
if (empty($_COOKIE) && SID != '' && (!$user_info['is_guest'] || (strpos($_SERVER['HTTP_USER_AGENT'], 'Mozilla') !== false || strpos($_SERVER['HTTP_USER_AGENT'], 'Opera') !== false)) && @version_compare(PHP_VERSION, '4.3.0') != -1)
$buffer = preg_replace('/"' . preg_quote($scripturl, '/') . '(?!\?' . preg_quote(SID, '/') . ')(\?)?/', '"' . $scripturl . '?' . SID . ';', $buffer);
// This should work even in 4.2.x, just not CGI.
if (!empty($modSettings['queryless_urls']) && (!$context['server']['is_cgi'] || @ini_get('cgi.fix_pathinfo') == 1) && $context['server']['is_apache'])
{
// Let's do something special for session ids!
if (defined('SID') && SID != '')
$buffer = preg_replace('/"' . preg_quote($scripturl, '/') . '\?(?:' . SID . ';)((?:board|topic)=[^#"]+?)(#[^"]*?)?"/e', "'\"' . \$scripturl . '/' . strtr('\$1', '&;=', '//,') . '.html?' . SID . '\$2\"'", $buffer);
else
$buffer = preg_replace('/"' . preg_quote($scripturl, '/') . '\?((?:board|topic)=[^#"]+?)(#[^"]*?)?"/e', "'\"' . \$scripturl . '/' . strtr('\$1', '&;=', '//,') . '.html\$2\"'", $buffer);
}
// Return the changed buffer.
return $buffer;
}
par :
- Code: Tout sélectionner
// Rewrite URLs to include the session ID.
function ob_sessrewrite($buffer)
{
global $scripturl, $modSettings, $user_info, $context;
// If $scripturl is set to nothing, or the SID is not defined (SSI?) just quit.
if ($scripturl == '' || !defined('SID'))
return $buffer;
// Do nothing if the session is cookied, or they are a crawler - guests are caught by redirectexit(). This doesn't work below PHP 4.3.0, because it makes the output buffer bigger.
if (empty($_COOKIE) && SID != '' && (!$user_info['is_guest'] || (strpos($_SERVER['HTTP_USER_AGENT'], 'Mozilla') !== false || strpos($_SERVER['HTTP_USER_AGENT'], 'Opera') !== false)))
$buffer = preg_replace('/"' . preg_quote($scripturl, '/') . '(?!\?' . preg_quote(SID, '/') . ')(\?)?/', '"' . $scripturl . '?' . SID . '&', $buffer);
// You can't do both, because session_start() won't catch the session if you do. But this should work even in 4.2.x, just not CGI.
else
$buffer = preg_replace('/"' . preg_quote($scripturl, '/') . '\?((?:board|topic)=[^#"]+)(#[^"]*)?"/e', "'\"' . \$scripturl . '/' . strtr('\$1', '&;=', '//,') . '.html\$2\"'", $buffer);
// Return the changed buffer.
return $buffer;
ensuite ajouter cette ligne à http://www.serveur.com/forum/index.php :
- Code: Tout sélectionner
$scripturl2 = '/';
juste après :
- Code: Tout sélectionner
// Get everything started up...
define('SMF', 1);
@set_magic_quotes_runtime(0);
error_reporting(E_ALL);
$time_start = microtime();
Ligne 37 environ
ensuite :
Editez ces 3 fichiers :
Sources/BoardIndex.php
Sources/Display.php
Sources/MessageIndex.php
Remplacer les expressions contenant :
- Code: Tout sélectionner
'<a href="' . $scripturl . '?topic=' .
par :
- Code: Tout sélectionner
'<a href="' . $scripturl . '/forum/topic-' .
puis toujours dans ces fichiers
- Code: Tout sélectionner
'<a href="' . $scripturl . '?board=' .
par :
- Code: Tout sélectionner
'<a href="' . $scripturl . '/forum/board-' .
Ensuite rechercher dans vos fichiers ****.template.php et vos 3 fichiers sources précédement modifiés les codes contenant :
- Code: Tout sélectionner
?board=
remplacer les par :
- Code: Tout sélectionner
/forum/board-
idem pour les codes contenant :
- Code: Tout sélectionner
?topic=
changer par :
- Code: Tout sélectionner
/forum/topic-
ensuite il faudra déclarer la variable globale dans vos fichiers ****.template.php comme ceci
- Code: Tout sélectionner
global $scripturl2,
déclarer partout ou cela est néccéssaire.
déclaré la aussi dans display.php ces lignes sont en générale en haut de page mais méfiez vous.
puis configurez votre .htaccess placé dans votre repertoir : /forum/ de cette façon ( ceci peut varier selon les différents serveurs moi c'est papache ) :
- Code: Tout sélectionner
RewriteEngine On
RewriteRule ^topic-([^/]+)[/]?$ /forum/index.php?topic=$1 [L]
RewriteRule ^board-([^/]+)[/]?$ /forum/index.php?board=$1 [L]
et voila mes amis vos urls seront sous forme de :
http://www.serveur.com/forum/board-11.0
et vos topics :
http://www.serveur.com/forum/topic-72.0
a+ les amigos

bonjour, j'ai tout fait, ça marche pas...
j'ai une belle page blanche... je recommencerai tout, j'ai peut-être fait une erreur quelque part, j'ai pourtant bien fait gaffe mais bon... est-ce que ça marche sur tous les thèmes ? classic par exemple, celui que j'utilise ?
7 messages • Page 1 sur 1
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 :
- Tutoriel URL Rewriting
- Optimiser le référencement d'un forum phpBB : réécriture d'URL
- Suite de l'article sur le fichier .htaccess : l'URL rewriting
- l'URL Rewriting expliqué aux débutants
- 3ème partie de l'article .htaccess : les réécritures conditionnelles
- L'URL Rewriting expliqué aux débutants
- Design de WRI version 3
- Aperçu des différents types de redirection
- Référencement : le problème des sessions des pages PHP
- Le référencement de pages PHP
- Appliquer l'URL Rewriting à un forum SMF
- SMF et l url rewriting
- xoops SMF et le url rewriting
- Url rewriting simple
- URL Rewriting, simple question ?
- url rewriting simple ne fonctionnant pas
- url rewriting simple avec du texte
- Probleme je pense très simple de url rewriting
- URL Rewriting, snif... Pas aussi simple que ça!
- Url Rewriting simple mais pour un débutant
- URL Rewriting de pages html - Cas très simple pour un bon !
- Référencement d'un forum SMF
- convertir mon forum smf
- Relooking de forum SMF tout rouge :)
- Etre référencé par Google avec un forum SMF ???
- Transformer des citations en liens
Cet outil vous permet de trouver des pages citant votre site mais ne faisant pas (encore) de lien. Il suffira parfois d'un simple mail pour transformer cette simple citation en lien (backlink).
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités






le forum