|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
Sujet : Url rewriting & php sur les forums smf [ Archives / Trucs et astuces ] (brakstar)
Informations & options pour cette discussion
jeudi 18 août 2005 à 00:01:17 |
Url rewriting & php sur les forums smf

brakstar
|
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 :
[code]// 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;
}[/code]
Chez moi elle ne marche pas .......
Les urls sont toujours sous forme de :
[i]http://www.brakstar.com/forum/index.php?board=19.0[/i]
alors que je voudrai qu'elle soit sous la forme ( pour l'instant ) :
[i]http://www.brakstar.com/forum/index.php/topic,1628.html[/i]
Après avoir lu un tutorial de Mr [Unknow]
J'ai remplacé la fonction ci dessus par :
[code]// 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;
}[/code]
Et la ça à presque marché !
J'avais des pages sous forme :
[i]http://www.brakstar.com/forum/index.php/topic,1628.html[/i]
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]RewriteEngine On
RewriteRule ^topic-([^/]+)[/]?$ /forum/index.php?topic=$1
RewriteRule ^board-([^/]+)[/]?$ /forum/index.php?board=$1[/code]
Mais rien ne fais ... erreur 404 :oops:
version du forum : 1.1 beta 3 public
:?: Pourriez vous m'aider :?:
|
|
|
jeudi 18 août 2005 à 08:38:14 |
Re : Url rewriting & php sur les forums smf

malik7934
|
Je suis pas specialiste du domaine mais je sents la faute dans ton fichier .htaccess  C'est pas clair de quoi a quoi tu veux passer, mais si tu dis que le probleme n'est pas le rewriting mais la redirection, alors essaie ca: RewriteEngine On RewriteRule ^topic-([^/]+)[/]?$ /le-chemin-complet-depuis-la-racine-de-ton-site/forum/index.php?topic=$1 RewriteRule ^board-([^/]+)[/]?$ /le-chemin-complet-depuis-la-racine-de-ton-site/forum/index.php?board=$1
|
|
|
samedi 20 août 2005 à 13:25:05 |
Re : Url rewriting & php sur les forums smf

brakstar
|
[b]Voici le tutorial pour VRAIMENT réécrire les urls D'un forum SMF 1.1 Béta 3 Publique ![/b]
avoir de urls sous forme :
[i]http://www.serveur.com/forum/board-11.0 [/i]
( niveau du tutos : moyen quand vous avez la solution ! et vous l'avez ! )
Donc suposons que vous avez un forum smf ayant cette url :
[i]http://www.serveur.com/forum/[/i]
Premiere chose :
Remplacer la derniere fonction de [i]http://www.serveur.com/forum/source/QueryString.php[/i] qui se présente sous forme :
[code]// 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;
}[/code]
par :
[code]// 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;[/code]
ensuite ajouter cette ligne à [i]http://www.serveur.com/forum/index.php[/i] :
[code]$scripturl2 = '/';[/code]
juste après :
[code]// Get everything started up...
define('SMF', 1);
@set_magic_quotes_runtime(0);
error_reporting(E_ALL);
$time_start = microtime();[/code]
Ligne 37 environ
ensuite :
Editez ces 3 fichiers :
[i]Sources/BoardIndex.php
Sources/Display.php
Sources/MessageIndex.php[/i]
Remplacer les expressions contenant :
[code]'
|
|
|
Cette discussion est classé dans : buffer, php, preg, sid, scripturl
Répondre à ce message
Sujets en rapport avec ce message
preg_replace pour chaine de code php [ par JoJo738 ]
Interpreter du php avec une fonction preg_match [ par cedriclomb ]
Bonjour,Voila le probleme function traiter_php() { $pattern = "()"; $recherche=""; preg_match($pa
Un petit problème d'expression régulieur en php avec preg_replace [ par ulise31 ]
Bonjour, j'ai besoin d'aide merci d'avanceAlors voici mon code php :$text = $_POST['textarea2'];$toto= '(.+)';$tyty='[gras]$1[/gras]';$text = preg_rep
formulaire en php [ par fouroulou ]
Bonjour tout le monde,Voilà j'ai un formulaire composé de deux pages: une page contant le formulaire lui même (formulaire.php) une page de
PHP Full ou POO [ par Orange73 ]
Hello,Une tite question :Quelles différences y a t'il entre une production full php et une POO ? Avantages - inconvénients ?merci :)
Problème de lien $_SESSION et $_GET... [ par BooletMan ]
Je suis sur le point de m'arracher les cheveux, tout débutant que je suis en PHP, sur un problème qui s'avèrera surement idiot... mais voilà: je suis
pb php [ par maxxou56 ]
Lorque je tente de compiler ma page index de mon site en php je reçois le message d'erreur suivant: Parse error: parse error, unexpected T_IF, expect
Filtrer un signal en php [ par magicsmacks ]
Bonjour,Je cherche à me fabriquer un filtre 50 Hz en php.Je sais que les formules initiales sont trop compliquées pour le php. Mais je sais aussi qu'i
flash et session en php [ par 7mido ]
je suis entrain de développer une application web et j'ai deux problèmes et j'espère que vous m'aidez. 1.j'ai développer une bannière en flash et je
gestion d'emploi de temps en php [ par talianiridha ]
Salut à tout le monde,réalisation des sites web dynamiques en php contenant une gestion d'emploi du temps universitaire.
Livres en rapport
|
Téléchargements
Logiciels à télécharger sur le même thème :
|