To jest tylko wersja do druku, aby zobaczyć pełną wersję tematu, kliknij TUTAJ
phpBB2 by Przemo
Support forów phpBB2 modified by Przemo

HTML/PHP/AJAX/JS - "wymuszenie" stosowania mod rewrite przez skrypt

danontico - 07-05-2008, 21:20
Temat postu: "wymuszenie" stosowania mod rewrite przez skrypt
Witam serdecznie.
Z góry informuję żeby nie pouczać mnie, że jest Spider friendly, bo jego instalacja nie wchodzi w grę :)
Do rzeczy...

Otóż napisałem sobie regułkę mod rewrite dla forum. I wszystko ładnie chodzi tzn. można wejść na dany adres po wpisaniu "nowego" (przepisanego) adresu. Tylko że na forum nadal występują stare adresy... Czyli np. do tematów są linki : viewtopic.php?t=53580, a nie temat-53580.html .

Jak zmusić skrypt żeby zamieniał linki na te po przepisaniu przez mod rewrite ?

Trochę zakręciłem, ale mam nadzieję że da się zrozumieć o co chodzi.
Z góry dziękuję za wszelką pomoc.

Pozdrawiam.
Danon.

potter125 - 07-05-2008, 21:54

Musisz się pobawić funkcją preg_replace
danontico - 13-05-2008, 17:44

Witam.
Przepraszam ze dopiero teraz odpisuje ale kompletnie zapomniałem o tym temacie.
Moja wiedza z php jest zbyt mała żeby pobawić się funkcjom preg_replace :) Dlatego tez byłbym wdzięczny za nieco szersze nakierowanie mnie na to jak to zrobić. znalazłem na pewnym forum taki kodzik :


Kod:
W pliku includes/page_header.php znajdź:

ob_start();

i zamień na:

ob_start();

function replace_for_mod_rewrite(&$s)

{

$urlin =

array(

"'(?<!/)viewforum.php?f=([0-9]*)&(?:amp;)topicdays=([0-9]*)&(?:amp;)start=([0-9]*)'",

"'(?<!/)viewforum.php?f=([0-9]*)&(?:amp;)mark=topics'",

"'(?<!/)viewforum.php?f=([0-9]*)'",

"'(?<!/)viewtopic.php?t=([0-9]*)&(?:amp;)view=previous'",

"'(?<!/)viewtopic.php?t=([0-9]*)&(?:amp;)view=next'",

"'(?<!/)viewtopic.php?t=([0-9]*)&(?:amp;)postdays=([0-9]*)&(?:amp;)postorder=([a-zA-Z]*)&(?:amp;)start=([0-9]*)'",

"'(?<!/)viewtopic.php?t=([0-9]*)&(?:amp;)start=([0-9]*)&(?:amp;)postdays=([0-9]*)&(?:amp;)postorder=([a-zA-Z]*)&(?:amp;)highlight=([a-zA-Z0-9]*)'",

"'(?<!/)viewtopic.php?t=([0-9]*)&(?:amp;)start=([0-9]*)'",

"'(?<!/)viewtopic.php?t=([0-9]*)'",

"'(?<!/)viewtopic.php&(?:amp;)p=([0-9]*)'",

"'(?<!/)viewtopic.php?p=([0-9]*)'",

);

$urlout = array(

"viewforum1-2-3.html",

"forum1.html",

"forum1.html",

"ptopic1.html",

"ntopic1.html",

"ftopic1-2-3-4.html",

"ftopic1.html",

"ftopic1-2.html",

"ftopic1.html",

"sutra1.html",

"sutra1.html",

);

$s = preg_replace($urlin, $urlout, $s);

return $s;

}


W pliku includes/page_tail.php znajdź

$db->sql_close();

i dodaj pod tym:

$contents = ob_get_contents();

ob_end_clean();

echo replace_for_mod_rewrite($contents);

global $dbg_starttime;

w tym samym pliku znajdź:



$gzip_contents = ob_get_contents();

       ob_end_clean();

i zamień na

$gzip_contents = ob_get_contents();

       ob_end_clean();

echo replace_for_mod_rewrite($contents);

global $dbg_starttime;


Jednak ten kod jest pisany pod phpbb2 i pod by przemo nie chce zadziałać.
Byłbym wdzięczny za nakierowanie mnie co należy przerobić aby to zadziałało i zaczęło w końcu automatycznie zmieniać linki.

Pozdrawiam.



Powered by phpBB modified by Przemo © 2003 phpBB Group