[Revised] vBulletin Mod_rewrite Tutorial

Reply

Join Date: Oct 2004
Posts: 34
Reputation: KeithMcL is an unknown quantity at this point 
Solved Threads: 0
KeithMcL's Avatar
KeithMcL KeithMcL is offline Offline
Light Poster

[Revised] vBulletin Mod_rewrite Tutorial

 
0
  #1
Oct 21st, 2004
I figured it was time that a revised edition of this tutorial be written up. So, I asked Dani if it was ok and well..... here it is

This revised edition includes how to make your forumhome, forumdisplay, showthread and who's online sections all show search engine friendly urls as well as in the navbar. It includes the id & name in the url of forums and threads.

Please take care when performing each step, making sure you perform the correct action - adding code ABOVE or BELOW other lines or REPLACING code.

Step 1 - File Edits
This step covers all files that need to be edited. Step 2 covers the template edits.

forumdisplay.php

Find:
[php]foreach ($parentlist AS $forumID)
{
$forumTitle = $forumcache["$forumID"]['title'];
$navbits["forumdisplay.php?$session[sessionurl]f=$forumID"] = $forumTitle;
}[/php]Replace with:
[php]// ################ MOD_REWRITE HACK ######################
foreach ($parentlist AS $forumID)
{
$forumTitle = $forumcache["$forumID"]['title'];
$forumURL = strtolower(str_replace(" ", "-",str_replace("/", "-", $forumTitle)));
$navbits["f$forumID-$forumURL.html"] = $forumTitle;
}
// ################ MOD_REWRITE HACK ######################[/php]Find:
[php]$thread = process_thread_array($thread, $lastread, $foruminfo['allowicons']);[/php]Below that add:
[php]// ################ MOD_REWRITE HACK ######################
$thread['url'] = strtolower(str_replace(" ", "-", $thread['threadtitle']));
$thread['url'] = ereg_replace("[\/!£$%^&*«»,.;:'#@~{}|=+`¬<>?]+", "", $thread['url']);
// ################ MOD_REWRITE HACK ######################[/php]

showthread.php

Find:
[php]foreach ($parentlist AS $forumID)
{
$forumTitle = $forumcache["$forumID"]['title'];
$navbits["forumdisplay.php?$session[sessionurl]f=$forumID"] = $forumTitle;
}[/php]Replace with:
[php]// ################ MOD_REWRITE HACK ######################
foreach ($parentlist AS $forumID)
{
$forumTitle = $forumcache["$forumID"]['title'];
$forumURL = strtolower(str_replace(" ", "-",str_replace("/", "-", $forumTitle)));
$navbits["f$forumID-$forumURL.html"] = $forumTitle;
}
// ################ MOD_REWRITE HACK ######################[/php]

search.php

Find:
[php]$thread = process_thread_array($thread, $lastread["$thread[forumid]"]);[/php]Below that add:
[php]// ################ MOD_REWRITE HACK ######################
$thread['url'] = strtolower(str_replace(" ", "-", $thread['threadtitle']));
$thread['url'] = ereg_replace("[\/!£$%^&*«»,.;:'#@~{}|=+`¬<>?]+", "", $thread['url']);
// ################ MOD_REWRITE HACK ######################[/php]

includes/functions_forumlist.php

Find:
[php]// do light bulb
$forum['statusicon'] = fetch_forum_lightbulb($forumid, $lastpostinfo, $forum);[/php]Above that add:
[php]// ################ MOD_REWRITE HACK ######################
$forum['url'] = strtolower(str_replace(" ", "-",str_replace("/", "-", $forum['title'])));
// ################ MOD_REWRITE HACK ######################[/php]Find:
[php]$forumperms = $bbuserinfo['forumpermissions']["$forumid"];[/php]Above that add:
[php]// ################ MOD_REWRITE HACK ######################
$forum['url'] = strtolower(str_replace(" ", "-",str_replace("/", "-", $forum['title'])));
// ################ MOD_REWRITE HACK ######################[/php]

includes/functions_online.php

Find:
[php]// ###################### Start showonline #######################[/php]Above that add:
[php]// ###################### MOD_REWRITE HACK #################
function mod_rewrite_title($title)
{
$rewritten = strtolower(str_replace(" ", "-",str_replace("/", "-", $title)));
return ereg_replace("[\/!£$%^&*«»,.;:'#@~{}|=+`¬<>?]+", "", $rewritten);
}
// ###################### MOD_REWRITE HACK #################[/php]Find all instances of:
[php]<a href=\"showthread.php?$session[sessionurl]t=$threadid\" title=\"$threadpreview\">$threadtitle</a>[/php]And replace with:
[php]<a href=\"t$threadid-" .mod_rewrite_title($threadtitle). ".html\" title=\"$threadpreview\">$threadtitle</a>[/php]Find all instances of:
[php]<a href=\"forumdisplay.php?$session[sessionurl]f=$forumid\">$forumtitle</a>[/php]And replace with:
[php]<a href=\"f$forumid-" .mod_rewrite_title($forumtitle). ".html\">$forumtitle</a>[/php]Find:
[php]convert_short_varnames($values);
$userinfo['values'] = $values;[/php]Below that add:
[php]// #################### MOD_REWRITE HACK #################
if (eregi("t([0-9]+)-(.*).html$", $filename, $tmatch)) {
$filename = 'showthread.php';
$values['threadid'] = $tmatch[1];
}

if (eregi("f([0-9]+)-(.*).html$", $filename, $fmatch)) {
$filename = 'forumdisplay.php';
$values['forumid'] = $fmatch[1];
}
// #################### MOD_REWRITE HACK #################[/php]
Step 2 - Template Edits
This step covers all the template edits needed. Step 3 covers the .htaccess file needed.

Within the Forum Home Templates group the following templates all require the modification below.

forumhome_forumbit_level1_nopost
forumhome_forumbit_level1_post
forumhome_forumbit_level2_nopost
forumhome_forumbit_level2_post
forumhome_subforumbit_nopost
forumhome_subforumbit_post

In each of the templates above find:
[php]<a href="forumdisplay.php?$session[sessionurl]f=$forum[forumid]">[/php]And replace with:
[php]<a href="f$forum[forumid]-$forum[url].html">$forum[title]</a>[/php]

In the forumhome_lastpostby template find:
[php]<a href="showthread.php?$session[sessionurl]goto=newpost&amp;t=$lastpostinfo[lastthreadid]" title="<phrase 1="$lastpostinfo[lastthread]">$vbphrase[go_first_unread_in_thread_x]</phrase>"><strong>$lastpostinfo[trimthread]</strong></a>[/php]And Replace with:
[php]<a href="newpostinthread$lastpostinfo[lastthreadid].html" title="<phrase 1="$lastpostinfo[lastthread]">$vbphrase[go_first_unread_in_thread_x]</phrase>"><strong>$lastpostinfo[trimthread]</strong></a>[/php]Find:
[php]<a href="showthread.php?$session[sessionurl]goto=lastpost&amp;t=$lastpostinfo[lastthreadid]"><img class="inlineimg" src="$stylevar[imgdir_button]/lastpost.gif" alt="$vbphrase[go_to_last_post]" border="0" /></a>[/php]And replace with:
[php]<a href="lastpostinthread$lastpostinfo[lastthreadid].html"><img class="inlineimg" src="$stylevar[imgdir_button]/lastpost.gif" alt="$vbphrase[go_to_last_post]" border="0" /></a>[/php]Find:[php]<a href="showthread.php?$session[sessionurl]goto=lastpost&amp;t=$lastpostinfo[lastthreadid]"><img class="inlineimg" src="$stylevar[imgdir_button]/lastpost.gif" alt="$vbphrase[go_to_last_post]" border="0" /></a>[/php]And replace with:[php]<a href="lastpostinthread$lastpostinfo[lastthreadid].html"><img class="inlineimg" src="$stylevar[imgdir_button]/lastpost.gif" alt="$vbphrase[go_to_last_post]" border="0" /></a>[/php]

In the Threadbit Templates group, the threadbit template requires the following modifications.

Find:
[php]<a href="showthread.php?$session[sessionurl]goto=lastpost&amp;t=$thread[threadid]">[/php]And replace with:
[php]<a href="lastpostinthread$thread[threadid].html">[/php]Find:
[php]<a href="showthread.php?$session[sessionurl]goto=newpost&amp;t=$thread[threadid]">[/php]And replace with:
[php]<a href="newpostinthread$thread[threadid].html">[/php]Find:
[php]<a href="showthread.php?$session[sessionurl]t=$thread[threadid]$thread[highlight]">[/php]And replace with:
[php]<a href="t$thread[threadid]-$thread[url].html">[/php]Find:
[php]<a href="showthread.php?$session[sessionurl]goto=lastpost&amp;t=$thread[threadid]">[/php]And replace with:
[php]<a href="lastpostinthread[threadid].html">[/php]

Step 3 -.htaccess file

Open notepad or your usual text editor and copy and paste the following into a new file.

[php]RewriteEngine on
Options +FollowSymLinks
RewriteRule ^t([0-9]+).html$ showthread.php?t=$1 [L]
RewriteRule ^lastpostinthread([0-9]+).html$ showthread.php?goto=lastpost&t=$1 [L]
RewriteRule ^newpostinthread([0-9]+).html$ showthread.php?goto=newpost&t=$1 [L]
RewriteRule ^f([0-9]+).html$ forumdisplay.php?f=$1 [L][/php]Save this file as .htaccess and upload it to your forum's root directory.


And that's it!

Now just sit back and wait for the search engines to spider your new urls :o

If I missed any steps (god forbid) or there's an error in any of the steps, please let me know and I'll update it.
Last edited by cscgal; Nov 10th, 2005 at 2:19 pm.
Reply With Quote Quick reply to this message  
Join Date: Oct 2004
Posts: 34
Reputation: KeithMcL is an unknown quantity at this point 
Solved Threads: 0
KeithMcL's Avatar
KeithMcL KeithMcL is offline Offline
Light Poster

Re: [Revised] vBulletin Mod_rewrite Tutorial

 
0
  #2
Oct 21st, 2004
There are two things that need mentioning:

1. In the includes/functions_forumlist.php file where I mention to find
[php]$forumperms = $bbuserinfo['forumpermissions']["$forumid"];[/php] and and above it add
[php]// ################ MOD_REWRITE HACK ######################
$forum['url'] = strtolower(str_replace(" ", "-",str_replace("/", "-", $forum['title'])));
// ################ MOD_REWRITE HACK ######################[/php]There are 3 instances of the line. It's the last instance (around line 530) you place the code above.

2. In the includes/functions_online.php file where I mention replacing all instances of
[php]<a href="showthread.php?$session[sessionurl]t=$threadid\" title=\"$threadpreview\">$threadtitle</a>[/php]with
[php]<a href="t$threadid-" .mod_rewrite_title($threadtitle). ".html\" title=\"$threadpreview\">$threadtitle</a>[/php]and replacing
[php]<a href="forumdisplay.php?$session[sessionurl]f=$forumid\">$forumtitle</a>[/php]with
[php]<a href="f$forumid-" .mod_rewrite_title($forumtitle). ".html\">$forumtitle</a>[/php]If your code has backslashes ( \ ), you need to keep them in the code.
Reply With Quote Quick reply to this message  
Join Date: Oct 2004
Posts: 16
Reputation: Natch is an unknown quantity at this point 
Solved Threads: 0
Natch Natch is offline Offline
Newbie Poster

Re: [Revised] vBulletin Mod_rewrite Tutorial

 
0
  #3
Oct 22nd, 2004
Great work KeithMcL, thanks for doing this!

/me heads off to change the link in my Sig to point to this tute

Great job Dani for this resource
Natcher00 ... is the Admin @ MobileForces.org - Official Community for a cult Vehicle based FPS - the only place for support!
[vB.org] PNG24 transparency with IE * DaniWeb: mod_rewrite your vB
Reply With Quote Quick reply to this message  
Join Date: Oct 2004
Posts: 34
Reputation: KeithMcL is an unknown quantity at this point 
Solved Threads: 0
KeithMcL's Avatar
KeithMcL KeithMcL is offline Offline
Light Poster

Re: [Revised] vBulletin Mod_rewrite Tutorial

 
0
  #4
Oct 22nd, 2004
No problem. Hope it works ok for everyone
Reply With Quote Quick reply to this message  
Join Date: Oct 2004
Posts: 16
Reputation: Natch is an unknown quantity at this point 
Solved Threads: 0
Natch Natch is offline Offline
Newbie Poster

Re: [Revised] vBulletin Mod_rewrite Tutorial

 
0
  #5
Oct 25th, 2004
One suggestion: is there any reason why we shouldn't have the mod_rewrite_title() function defined only in includes/functions.php, and call that to rewrite every title in the hack? that way the second element of the function (the [php]ereg_replace("[\/!£$%^&*«»,.;:'#@~{}|=+`¬<>?]+", "", $rewritten);[/php]) could be applied across the board, ensureing that all links across the site will match, making the SEO'ness better (making sure there is only one "page" per page of content).
Natcher00 ... is the Admin @ MobileForces.org - Official Community for a cult Vehicle based FPS - the only place for support!
[vB.org] PNG24 transparency with IE * DaniWeb: mod_rewrite your vB
Reply With Quote Quick reply to this message  
Join Date: Sep 2004
Posts: 34
Reputation: TraderX is an unknown quantity at this point 
Solved Threads: 0
TraderX's Avatar
TraderX TraderX is offline Offline
Light Poster

Re: [Revised] vBulletin Mod_rewrite Tutorial

 
0
  #6
Oct 25th, 2004
I have a question about the step below
Originally Posted by KeithMcL

includes/functions_online.php
Find all instances of:
[php]<a href=\"showthread.php?$session[sessionurl]t=$threadid\" title=\"$threadpreview\">$threadtitle</a>[/php]And replace with:
[php]<a href=\"t$threadid-" .mod_rewrite_title($threadtitle). ".html\" title=\"$threadpreview\">$threadtitle</a>[/php]
In my includes/functions_online.php I have

<a href=\"showthread.php?$session[sessionurl]t=$threadid\" title=\"$threadpreview\">$threadtitle</a>

but the above shows

<a href="showthread.php?$session[sessionurl]t=$threadid\" title=\"$threadpreview\">$threadtitle</a>

what do I do? it appears that when you use the code tags here to show code it takes out the a href=\ and makes it a href=

Am I correct with this as it states in one of the above posts (post #2)
If your code has backslashes ( \ ), you need to keep them in the code.
Help pls
Reply With Quote Quick reply to this message  
Join Date: Oct 2004
Posts: 5
Reputation: Thomas P is an unknown quantity at this point 
Solved Threads: 0
Thomas P Thomas P is offline Offline
Newbie Poster

Re: [Revised] vBulletin Mod_rewrite Tutorial

 
0
  #7
Oct 25th, 2004
Very interesting, I'd love to see this on our boards

I tested this on our testing forum, but in contrast to dani's hack it doesn't seem to work: http://forum.mbrd.de

Any ideas what I might have overseen?

Thanks,
-Tom
Reply With Quote Quick reply to this message  
Join Date: Oct 2004
Posts: 16
Reputation: Natch is an unknown quantity at this point 
Solved Threads: 0
Natch Natch is offline Offline
Newbie Poster

Re: [Revised] vBulletin Mod_rewrite Tutorial

 
0
  #8
Oct 25th, 2004
Originally Posted by TraderX
I have a question about the step below


In my includes/functions_online.php I have

<a href=\"showthread.php?$session[sessionurl]t=$threadid\" title=\"$threadpreview\">$threadtitle</a>

but the above shows

<a href="showthread.php?$session[sessionurl]t=$threadid\" title=\"$threadpreview\">$threadtitle</a>

what do I do? it appears that when you use the code tags here to show code it takes out the a href=\ and makes it a href=

Am I correct with this as it states in one of the above posts (post #2)


Help pls
I *think* this is a typo man...
Natcher00 ... is the Admin @ MobileForces.org - Official Community for a cult Vehicle based FPS - the only place for support!
[vB.org] PNG24 transparency with IE * DaniWeb: mod_rewrite your vB
Reply With Quote Quick reply to this message  
Join Date: Oct 2004
Posts: 40
Reputation: kall is an unknown quantity at this point 
Solved Threads: 0
kall's Avatar
kall kall is offline Offline
Light Poster

Re: [Revised] vBulletin Mod_rewrite Tutorial

 
0
  #9
Oct 26th, 2004
This is mighty cool stuff, and I seem to have it all working fine on NZB.

After 2 days, my Adsense ads are a lot more targetted. I don't know if it's due to this hacking, but I'll assume it is and add my thanks.

One suggestion: Maybe putting it all up as a .txt file would prove helpful...or something that doesn't strip the backslashes and "&amp" bits.
Reply With Quote Quick reply to this message  
Join Date: Sep 2004
Posts: 34
Reputation: TraderX is an unknown quantity at this point 
Solved Threads: 0
TraderX's Avatar
TraderX TraderX is offline Offline
Light Poster

Re: [Revised] vBulletin Mod_rewrite Tutorial

 
0
  #10
Oct 26th, 2004
Originally Posted by kall
One suggestion: Maybe putting it all up as a .txt file would prove helpful...or something that doesn't strip the backslashes and "&amp" bits.
That would be nice as that is what I had seen when I was trying to use some of this, I was having a very hard time when I was doing the searches, untill I noticed that the backslashes were stripped.... so I stopped.

Didn't want to go to far and something go wrong and not knowing where it happened would be a pain to fix.

Coll
Reply With Quote Quick reply to this message  
Reply

This thread is more than three months old.
Perhaps start a new thread instead?
Message:



Similar Threads
Other Threads in the PHP Forum
Thread Tools Search this Thread



About Us | Contact Us | Advertise | DaniWeb | Acceptable Use Policy | RSS Feed

©2003 - 2009 DaniWeb® LLC