User Name Password Register
DaniWeb IT Discussion Community
All
What is DaniWeb IT Discussion Community?
You're currently browsing the Existing Scripts section within the Web Development category of DaniWeb, a massive community of 375,242 software developers, web developers, Internet marketers, and tech gurus who are all enthusiastic about making contacts, networking, and learning from each other. In fact, there are 2,324 IT professionals currently interacting right now! Registration is free, only takes a minute and lets you enjoy all of the interactive features of the site.
Please support our Existing Scripts advertiser: Web Code Converter

The quick 'n' dirty ultra simple vBulletin SEO hack

Join Date: Feb 2002
Location: Lawn Guylen, NY
Posts: 10,873
Reputation: cscgal is just really nice cscgal is just really nice cscgal is just really nice cscgal is just really nice cscgal is just really nice 
Rep Power: 32
Solved Threads: 107
Admin
Staff Writer
cscgal's Avatar
cscgal cscgal is offline Offline
The Queen of DaniWeb

The quick 'n' dirty ultra simple vBulletin SEO hack

  #1  
Nov 10th, 2005
This is a very quick 'n' simple vBulletin SEO hack. It's easy to apply and it's the one I have been using here on DaniWeb for the past couple of months. I was going to wait until we went vB 3.5 to release it but I might as well do so now ... Disclaimer: This is for vBulletin 3.0.x. It should not be too complicated to port to 3.5 with their hooks system, but I have no experience with 3.5 and therefore don't want to say one way or another. If you use this hack, please link to DaniWeb in your footer. This is a free hack, and it can make or break the traffic to your site. I don't know of any other freely available hacks like this one. Please help us out in exchange for releasing this!

STEP 1: Create an .htaccess file in your forum directory and put the following into it:
  1. Options +FollowSymLinks
  2. RewriteEngine on
  3. RewriteRule ^getdaily.html$ search.php?do=getdaily [L]
  4. RewriteRule ^getdaily([0-9]+).html$ search.php?do=getdaily&f=$1 [L]
  5. RewriteRule ^unanswered.html$ search.php?do=process&replyless=1&replylimit=0&dontcache=1 [L]
  6. RewriteRule ^unanswered([0-9]+).html$ search.php?do=process&replyless=1&replylimit=0&dontcache=1&forumchoice=$1&childforums=1 [L]
  7. RewriteRule ^forum([0-9]+).html$ forumdisplay.php?f=$1 [L]
  8. RewriteRule ^forum([0-9]+)-([0-9]+)-([a-z]+)-(.*)-([0-9]+)-(.*).html$ forumdisplay.php?f=$1&page=$2&sort=$3&order=$4&pp=$5&daysprune=$6 [L]
  9. RewriteRule ^forum([0-9]+)-(.*)-([a-z]+)-([a-z]+).html$ forumdisplay.php?f=$1&daysprune=$2&order=$3&sort=$4 [L]
  10. RewriteRule ^announcement([0-9]+).html$ announcement.php?f=$1 [L]
  11. RewriteRule ^announcement([0-9]+)-([0-9]+).html$ announcement.php?f=$1&announcementid=$2 [L]
  12. RewriteRule ^thread([0-9]+).html$ showthread.php?t=$1 [L]
  13. RewriteRule ^thread([0-9]+)-([0-9]+).html$ showthread.php?t=$1&page=$2 [L]
  14. RewriteRule ^getnew.html$ search.php?do=getnew [L]
  15. RewriteRule ^getnew([0-9]+).html$ search.php?do=getnew&f=$1 [L]
  16. RewriteRule ^printthread([0-9]+).html$ printthread.php?t=$1 [L]
  17. RewriteRule ^sendthread([0-9]+).html$ sendmessage.php?do=sendtofriend&t=$1 [L]
  18. RewriteRule ^referthread([0-9]+)-([0-9]+).html$ showthread.php?t=$1&referrerid=$2 [L]
  19. RewriteRule ^lastpostinthread([0-9]+).html$ showthread.php?goto=lastpost&t=$1 [L]
  20. RewriteRule ^newpostinthread([0-9]+).html$ showthread.php?goto=newpost&t=$1 [L]
  21. RewriteRule ^nextnewesttothread([0-9]+).html$ showthread.php?t=$1&goto=nextnewest [L]
  22. RewriteRule ^nextoldesttothread([0-9]+).html$ showthread.php?t=$1&goto=nextoldest [L]
  23. RewriteRule ^post([0-9]+).html$ showthread.php?p=$1 [L]
  24. RewriteRule ^post([0-9]+)-([0-9]+).html$ showpost.php?p=$1&postcount=$2 [L]
  25. RewriteRule ^post([0-9]+)-([0-9]+)-([0-9]+).html$ showthread.php?p=$1&page=$2&pp=$3 [L]
  26. RewriteRule ^thread([0-9]+)-([a-z]+).html$ showthread.php?mode=$2&t=$1 [L]
  27. RewriteRule ^post([0-9]+)-([a-z]+).html$ showthread.php?p=$1&mode=$2 [L]

STEP 2:

In the includes/functions.php file, below
  1. function print_output($vartext, $sendheader = 1)
  2. {
  3. global $pagestarttime, $query_count, $querytime, $DB_site, $bbuserinfo;
  4. global $vbphrase, $vboptions, $stylevar, $_REQUEST;

in 3.0.7 (in another version of 3.0.x, just put the code below the global declarations in the print_output function) add:

  1. // do Dani's SEO optimization
  2. global $session;
  3.  
  4. $search_array = array(
  5. '#<a ([^>]*)href' . preg_quote("=\"forumdisplay.php?$session[sessionurl]f=") . '([0-9]+)' . preg_quote("&amp;page=") . '([0-9]+)' . preg_quote("&amp;sort=") . '([a-z]*)' . preg_quote("&amp;order="). '([a-z]*)' . preg_quote("&amp;pp=") . '([0-9]*)' . preg_quote("&amp;daysprune="). '([^"]*)"#',
  6. '#<a ([^>]*)href' . preg_quote("=\"forumdisplay.php?$session[sessionurl]f=") . '([0-9]+)' . preg_quote("&amp;daysprune=") . '([^"]*)' . preg_quote("&amp;order=") . '([a-z]*)' . preg_quote("&amp;sort=") . '([a-z]*)' . preg_quote("&amp;pp=") . '([0-9]*)' . preg_quote("&amp;page=") . '([0-9]+)"#',
  7. '#<a ([^>]*)href' . preg_quote("=\"forumdisplay.php?$session[sessionurl]f=") . '([0-9]+)' . preg_quote("&amp;daysprune=") . '([^"^&]*)' . preg_quote("&amp;order=") . '([a-z]*)' . preg_quote("&amp;sort=") . '([a-z]*)"#',
  8. '#<a ([^>]*)href' . preg_quote("=\"forumdisplay.php?$session[sessionurl]f=") . '([0-9]+)' . preg_quote("&amp;daysprune="). '([^"^&]*)"#',
  9. '#<a ([^>]*)href' . preg_quote("=\"forumdisplay.php?$session[sessionurl]f=") . '([0-9]+)' . preg_quote("&amp;page=") . '([0-9]+)"#',
  10. '#<a ([^>]*)href' . preg_quote("=\"forumdisplay.php?$session[sessionurl]f=") . '([0-9]+)"#',
  11. '#<a ([^>]*)href' . preg_quote("=\"showthread.php?$session[sessionurl]t=") . '([0-9]+)' . preg_quote("&amp;page=") . '([0-9]*)' . preg_quote("&amp;pp=") . '([0-9]+)"#',
  12. '#<a ([^>]*)href' . preg_quote("=\"showthread.php?$session[sessionurl]t=") . '([0-9]+)' . preg_quote("&amp;page=") . '([0-9]+)"#',
  13. '#<a ([^>]*)href' . preg_quote("=\"showthread.php?$session[sessionurl]t=") . '([0-9]+)"#',
  14. '#<a ([^>]*)href' . preg_quote("=\"showthread.php?$session[sessionurl]goto=lastpost&amp;t=") . '([0-9]+)"#',
  15. '#<a ([^>]*)href' . preg_quote("=\"showthread.php?$session[sessionurl]goto=newpost&amp;t=") . '([0-9]+)"#',
  16. '#<a ([^>]*)href' . preg_quote("=\"printthread.php?$session[sessionurl]t=") . '([0-9]+)"#',
  17. '#<a ([^>]*)href' . preg_quote("=\"sendmessage.php?$session[sessionurl]do=sendtofriend&amp;t=") . '([0-9]+)"#',
  18. '#<a ([^>]*)href' . preg_quote("=\"showthread.php?$session[sessionurl]t=") . '([0-9]+)' . preg_quote("&amp;goto=next"). '([a-z]+)"#',
  19. '#<a ([^>]*)href' . preg_quote("=\"showthread.php?$session[sessionurl]p=") . '([0-9]+)"#',
  20. '#<a ([^>]*)href' . preg_quote("=\"showthread.php?$session[sessionurl]p=") . '([0-9]+)' . preg_quote("&amp;page=") . '([0-9]+)' . preg_quote("&amp;pp=") . '([0-9]+)"#',
  21. '#<a ([^>]*)href' . preg_quote("=\"showpost.php?$session[sessionurl]p=") . '([0-9]+)' . preg_quote("&amp;postcount=") . '([0-9]+)"#',
  22. '#<a ([^>]*)href' . preg_quote("=\"showthread.php?$session[sessionurl]mode=") . '([a-z]+)' . preg_quote("&amp;t=") . '([0-9]+)"#',
  23. '#<a ([^>]*)href' . preg_quote("=\"showthread.php?$session[sessionurl]p=") . '([0-9]+)' . preg_quote("&amp;mode=") . '([a-z]+)\##',
  24.  
  25. '#<a ([^>]*)href' . preg_quote("=\"announcement.php?$session[sessionurl]f=") . '([0-9]+)' . preg_quote("&amp;announcementid=") . '([0-9]+)"#',
  26. '#<a ([^>]*)href' . preg_quote("=\"announcement.php?$session[sessionurl]f=") . '([0-9]+)"#',
  27.  
  28. // sanitizing
  29. '#<a ([^>]*)href\=\"([^"]*)&amp;page=([^"]*).html"#',
  30. '#<a ([^>]*)href\=\"([^"]*)&amp;highlight=([^"]*).html"#',
  31.  
  32. // other
  33. '#<a ([^>]*)href' . preg_quote("=\"search.php?$session[sessionurl]do=getdaily&amp;f=") . '([0-9]*)"#',
  34. '#<a ([^>]*)href' . preg_quote("=\"search.php?$session[sessionurl]do=getdaily") . '"#',
  35. '#<a ([^>]*)href' . preg_quote("=\"search.php?$session[sessionurl]do=process&amp;replyless=1&amp;replylimit=0&amp;dontcache=1&amp;forumchoice=&amp;childforums=1") . '"#',
  36. '#<a ([^>]*)href' . preg_quote("=\"search.php?$session[sessionurl]do=process&amp;replyless=1&amp;replylimit=0&amp;dontcache=1&amp;forumchoice=") . '([0-9]+)' . preg_quote("&amp;childforums=1") . '"#'
  37.  
  38. );
  39. $replace_array = array(
  40. '<a \1href="forum\2-\3-\4-\5-\6-\7.html"',
  41. '<a \1href="forum\2-\7-\5-\4-\6-\3.html"',
  42. '<a \1href="forum\2-\3-\4-\5.html"',
  43. '<a \1href="forum\2-\3.html"',
  44. '<a \1href="forum\2-\3.html"',
  45. '<a \1href="forum\2.html"',
  46. '<a \1href="thread\2-\3.html"',
  47. '<a \1href="thread\2-\3.html"',
  48. '<a \1href="thread\2.html"',
  49. '<a \1href="lastpostinthread\2.html"',
  50. '<a \1href="newpostinthread\2.html"',
  51. '<a \1href="printthread\2.html"',
  52. '<a \1href="sendthread\2.html"',
  53. '<a \1href="next\3tothread\2.html"',
  54. '<a \1href="post\2.html"',
  55. '<a \1href="post\2-\3-\4.html"',
  56. '<a \1href="post\2-\3.html"',
  57. '<a \1href="thread\3-\2.html"',
  58. '<a \1href="post\2-\3.html#',
  59.  
  60. '<a \1href="announcement\2-\3.html"',
  61. '<a \1href="announcement\2.html"',
  62.  
  63. // sanitizing
  64. '<a \1href="\2-\3.html"',
  65. '<a \1href="\2-\3.html"',
  66.  
  67. // other
  68. '<a \1href="getdaily\2.html"',
  69. '<a \1href="getdaily.html"',
  70. '<a \1href="unanswered.html"',
  71. '<a \1href="unanswered\2.html"'
  72.  
  73. );
  74. $vartext = preg_replace($search_array, $replace_array, $vartext);
Please do not duplicate all or part of this code elsewhere. Thanks should go out to Xenon for suggesting to me that I can rewrite URLs from within this function. Thanks!! ... And, please, give credit where credit is due - if you use this hack, please link back.
Last edited by cscgal : Mar 21st, 2007 at 2:36 am. Reason: Updated to use new code tags
AddThis Social Bookmark Button
Reply With Quote  
All times are GMT -4. The time now is 4:33 am.
Forum system based on vBulletin Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
©2003 - 2008 DaniWeb® LLC