Seite 1 von 9

Short Urls bei Categories Hierarchy

Verfasst: 14.02.2005 10:54
von mgutt
Die jeweils aktuellste Version ist hier zu finden:
http://ptifo.clanmckeen.com/viewtopic.php?t=259


Die Short Urls für den Categories Hierarchy Mod V 2.1.0 gepostet von Rabbit und geschrieben von 'paperclips' @ ggweb-fr.com :

Code: Alles auswählen

# 
#-----[ OPEN ]------------------------------------------ 
# 
includes/page_header.php 
# 
#-----[ FIND ]------------------------------------------ 
# 
$template->set_filenames(array( 
   'overall_header' => ( empty($gen_simple_header) ) 
); 
# 
#-----[ AFTER, ADD ]------------------------------------------ 
# 
ob_start(); 
function replace_mod_rewrite($s) 
{ 

   $urlin = array( 
 //Forums 
   "'(?<!/\./)index.php\?f=([0-9]*)&ppage=([0-9]*)&sort=lastpost&order=DESC&start=([0-9]*)'", 
   "'(?<!/\./)index.php\?f=([0-9]*)&ppage=([0-9]*)&sort=lastpost&order=DESC'", 
   "'(?<!/\./)index.php\?f=([0-9]*)&mark=topics'", 
   "'(?<!/\./)index.php\?mark=forums'", 
   "'(?<!/\./)index.php\?f=([0-9]*)'", 
   "'(?<!/\./)index.php'", 
//Topics 
   "'(?<!/\./)viewtopic.php\?t=([0-9]*)&postdays=([0-9]*)&postorder=asc&start=([0-9]*)'", 
   "'(?<!/\./)viewtopic.php\?t=([0-9]*)&postdays=([0-9]*)&postorder=asc&vote=viewresult'", 
   "'(?<!/\./)viewtopic.php\?t=([0-9]*)&watch=topic&postorder=asc'", 
   "'(?<!/\./)viewtopic.php\?t=([0-9]*)&unwatch=topic&postorder=asc'", 
   "'(?<!/\./)viewtopic.php\?t=([0-9]*)&start=([0-9]*)'", 
   "'(?<!/\./)viewtopic.php\?t=([0-9]*)&unmark=topic'",
   "'(?<!/\./)viewtopic.php\?p=([0-9]*)&unmark=post'",
   "'(?<!/\./)viewtopic.php\?t=([0-9]*)&view=newest'",
   "'(?<!/\./)viewtopic.php\?t=([0-9]*)&postorder=asc&start=([0-9]*)'",
   "'(?<!/\./)viewtopic.php\?t=([0-9]*)&view=previous'", 
   "'(?<!/\./)viewtopic.php\?t=([0-9]*)&view=next'", 
   "'(?<!/\./)viewtopic.php\?p=([0-9]*)'", 
   "'(?<!/\./)viewtopic.php\?t=([0-9]*)'", 
); 

   $urlout = array( 
//Forums 
   "forum-\\1-\\2-\\3.html", 
   "forum-\\1-\\2.html", 
   "mforum-\\1.html", 
   "mforums.html", 
   "forum-\\1.html", 
   "forums.html", 
//Topics 
   "topic-\\1-\\2-\\3.html", 
   "poll-\\1-\\2.html", 
   "wtopic-\\1.html", 
   "utopic-\\1.html", 
   "topic-\\1-\\2.html", 
   "uttopic\\1.html",
   "uptopic\\1.html",
   "newtopic\\1.html",
   "topic-\\1-\\2.html",
   "ptopic-\\1.html", 
   "ntopic-\\1.html", 
   "post-\\1.html", 
   "topic-\\1.html", 
); 

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

   return $s; 
} 
# 
#-----[ OPEN ]------------------------------------------ 
# 
includes/page_tail.php 
# 
#-----[ FIND ]------------------------------------------ 
# 
$db->sql_close(); 
# 
#-----[ AFTER, ADD ]------------------------------------------ 
# 
$contents = ob_get_contents(); 
ob_end_clean(); 
echo replace_mod_rewrite($contents); 
global $dbg_starttime; 
# 
#-----[ FIND ]------------------------------------------ 
# 
   $gzip_contents = ob_get_contents(); 
# 
#-----[ AFTER, ADD ]------------------------------------------ 
# 
      echo replace_for_mod_rewrite($contents); 
      global $dbg_starttime; 
# 
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------ 
# 
# EoM
für die .htaccess:

Code: Alles auswählen

RewriteEngine On 
#Forums 
   RewriteRule ^forum-([0-9]*)-([0-9]*)-([0-9]*).* index.php?f=$1&ppage=$2&sort=lastpost&order=DESC&start=$3 
   RewriteRule ^forum-([0-9]*)-([0-9]*).* index.php?f=$1&ppage=$2&sort=lastpost&order=DESC 
   RewriteRule ^mforum-([0-9]*).* index.php?f=$1&mark=topics 
   RewriteRule ^mforums.* index.php?mark=forums 
   RewriteRule ^forum-([0-9]*).* index.php?f=$1 
   RewriteRule ^forums.* index.php 
   RewriteRule ^admin/forums.* admin/index.php 
#Topics 
    RewriteRule ^topic-([0-9]*)-([0-9]*)-([0-9]*).* viewtopic.php\?t=$1&postdays=$2&postorder=asc&start=$3 
    RewriteRule ^poll-([0-9]*)-([0-9]*).* viewtopic.php\?t=$1&postdays=$2&postorder=asc&vote=viewresult 
   RewriteRule ^wtopic-([0-9]*).* viewtopic.php?t=$1&watch=topic&postorder=asc 
   RewriteRule ^utopic-([0-9]*).* viewtopic.php?t=$1&unwatch=topic&postorder=asc 
   RewriteRule ^topic-([0-9]*)-([0-9]*).* viewtopic.php?t=$1&start=$2 
   RewriteRule ^uttopic([0-9]*).* viewtopic.php?t=$1&unmark=topic
   RewriteRule ^uptopic([0-9]*).* viewtopic.php?p=$1&unmark=post
   RewriteRule ^newtopic([0-9]*).* viewtopic.php?t=$1&view=newest
   RewriteRule ^ptopic-([0-9]*).* viewtopic.php?t=$1&view=previous 
   RewriteRule ^ntopic-([0-9]*).* viewtopic.php?t=$1&view=next 
   RewriteRule ^post-([0-9]*).* viewtopic.php?p=$1 
   RewriteRule ^topic-([0-9]*).* viewtopic.php?t=$1 
getestet und für gut befunden! :D

**edit**
für user, die den jr.admin MOD mit CH 2.1.0 nutzen:
euer jr.admin kommt nicht ins acp mit der o.g. änderung der page_header.php, daher müsst ihr folgendes ändern:

Code: Alles auswählen

#-----[ OPEN ]------------------------------------------ 
# 
includes/page_header.php 
# 
#-----[ FIND ]------------------------------------------ 
# 
   "'(?<!/\./)index.php'",
# 
#-----[ REPLACE WITH ]------------------------------------------ 
# 
   "'(?<!/)index.php'",
# 
#-----[ OPEN ]------------------------------------------ 
# 
.htaccess 
# 
#-----[ FIND AND DELETE ]------------------------------------------ 
# 
RewriteRule ^admin/forums.* admin/index.php 
# 
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------ 
# 
# EoM
**edit02**
fixed bug, bei dem man nicht auf seite 2, 3,... gehen konnte in einem topic, sondern immer wieder auf seite 1 landete.

**edit03**
Hier nochmal die robots.txt, die ihr auch anlegen solltet um doppelten Content in den Suchmaschinen zu vermeiden:

Code: Alles auswählen

User-agent: *
Disallow: /login.php
Disallow: /admin/
Disallow: /db/
Disallow: /images/
Disallow: /includes/
Disallow: /language/
Disallow: /templates/
Disallow: /config.php
Disallow: /profile.php
Disallow: /groupcp.php
Disallow: /memberlist.php
Disallow: /modcp.php
Disallow: /posting.php
Disallow: /privmsg.php
Disallow: /viewonline.php
Disallow: /faq.php
Disallow: /ptopic*.html$
Disallow: /ntopic*.html$
Disallow: /fpost*.html$
Disallow: /uttopic*.html$
Disallow: /uptopic*.html$
Disallow: /newtopic*.html$
Disallow: /ftopic*asc*.html$

**edit04**

Bugfixes integriert für die URLs:
- Topics als ungelesen markieren
- Posts als ungelesen marikieren
- Neuester Post in einem Topic

**edit05** 20.09.2005

Bugfixes integriert:
- in page_tail.php Position des Codeinbaus geändert (direkt nach: "$gzip_contents...", nicht erst nach "ob_end_clean();")

Das ist wichtig, wenn in Eurem Board gzip aktiviert ist.

Verfasst: 14.02.2005 16:09
von rabbit
bei mir zeigt er
/post-1.html&unmark=post
an und das funktioniert. allerdings kann ich das jetzt nicht mehr nachprüfen, da ich mod_rewrite nur für gäste laufen habe und die members sehen ganz normale dynamische php-links. da gäste verständlicherweise nicht als 'ungelesen' markieren können, geht das nun bei mir nicht mehr zu testen (erinnere mich aber, dass es ging, als ich mod_rewrite noch für alle laufen hatte).

Verfasst: 14.02.2005 16:48
von mgutt
ja ich habe den mod leicht abgewandelt was die dateinamen betrifft, aber du hast jetzt den link eh gepostet von der kleinen grafik rechts neben einem post. aber der geht genauso wenig :cry:

Verfasst: 17.02.2005 17:45
von Fundus
guter Mod 8)

hab das jetzt so gelöst das nur registrierte die Shorturls bekommen
(if anonymus abfrage bei den drei stellen der shorturls)

damit funktioniert wieder alles und google wird sicher nichts als ungelesen markieren wollen :wink:

Verfasst: 17.02.2005 19:27
von mgutt
nur registrierte? das ist doch blödsinn.. shorturls sind doch gerade dafür da, dass die suchmaschine es einfacher hat.. und seit dem der mod bei mir läuft haben die sumas im schnitt 50% mehr seiten gelistet!

Verfasst: 17.02.2005 21:46
von Fundus
natürlich ist das blödsinn umgekehrt wird ein schuh draus :oops:

ich meinte Anonymus bekommt die Shorturls und die Registrierten nicht :wink:

deswegen ja auch das mit der funktion der unread markierung usw

hab micht etwas damit gespielt aber habs dann auch nicht hinbekommen das zum laufen zu kriegen und wenn man die Shorturls für die regs Abschaltet :wink: läuft wieder alles bestens.

Hab dann auch gleich noch ne funktion aus der Plus1.53Beta übernommen womit man beides nach belieben (SID&Shorturls) abschalten kann, was auch recht gut funzt
nur läst sich die SID nicht ohne Shorturls abschalten :-? da werd ich wohl noch nachbessern müssen :(

Verfasst: 19.02.2005 14:23
von mgutt
ich habe mich dran gemacht und drei Bugfixes integriert. Jetzt gehen auch die genannten Links mit dem "ungelesen markieren" und "view newest post".

Verfasst: 09.03.2005 14:15
von mgutt
Problem entdeckt:

- Wenn man z.B. einen Link von einem befreundete Forum in einem Beitrag verlinkt á la "www.deinedomain.de/viewforum.php?f=6" dann wird dieser Link ebenfalls durch die page_header.php umgewandelt in "www.deinedomain.de/viewforums6.html"

Weiß jemand wie man das beheben könnte? Sonst würden ja alle Links zu phpbb-Foren zerstört werden.

Verfasst: 09.03.2005 14:21
von larsneo
wirf einmal einen genaueren blick auf die

Code: Alles auswählen

function replace_mod_rewrite()
im orginalmod ;-)

Verfasst: 09.03.2005 17:46
von rabbit
larsneo hat geschrieben:wirf einmal einen genaueren blick auf die

Code: Alles auswählen

function replace_mod_rewrite()
im orginalmod ;-)
lol, yup...
die version von andreas hab' ich auch bei mir laufen, soweit ohne probleme. :)