![]() |
| ||
| [Revised] vBulletin Mod_rewrite Tutorial 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 :D 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&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&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&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&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&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&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. |
| ||
| Re: [Revised] vBulletin Mod_rewrite Tutorial 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. |
| ||
| Re: [Revised] vBulletin Mod_rewrite Tutorial 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 :) |
| ||
| Re: [Revised] vBulletin Mod_rewrite Tutorial No problem. Hope it works ok for everyone :) |
| ||
| Re: [Revised] vBulletin Mod_rewrite Tutorial 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). |
| ||
| Re: [Revised] vBulletin Mod_rewrite Tutorial I have a question about the step below Quote:
<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) Quote:
|
| ||
| Re: [Revised] vBulletin Mod_rewrite Tutorial 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 |
| ||
| Re: [Revised] vBulletin Mod_rewrite Tutorial Quote:
|
| ||
| Re: [Revised] vBulletin Mod_rewrite Tutorial 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 "&" bits. |
| ||
| Re: [Revised] vBulletin Mod_rewrite Tutorial Quote:
Didn't want to go to far and something go wrong and not knowing where it happened would be a pain to fix. Coll |
| ||
| Re: [Revised] vBulletin Mod_rewrite Tutorial Hmm...it doesn't seem to work for me...After some editing I got it displaying allright, but the url's lead to error pages... for example http://www.nordinho.com/vbull/f4-the...ws-forums.html leads to a error page...any idea's how to solve this or where to start?? My testforum is located at www.nordinho.com/vbull (The last post in thread works fine by the way) Greets Nordinho, |
| ||
| Re: [Revised] vBulletin Mod_rewrite Tutorial @Nordinho: Exactly the same I experience. So mod_rewrite seems to work, but something is going wrong. @KeithMcL: Could you please bare with us and try to push us in the right direction? Thanks, -Tom |
| ||
| Re: [Revised] vBulletin Mod_rewrite Tutorial Quote:
|
| ||
| Re: [Revised] vBulletin Mod_rewrite Tutorial Quote:
Keith used the wrong rewrite lines...your htaccess file should look like the one below... Quote:
|
| ||
| Re: [Revised] vBulletin Mod_rewrite Tutorial Nordinho, that is really sneaky - now it works http://www.smilieportal.de/img/cool/1/028.gif Thanks! :) -Tom |
| ||
| Re: [Revised] vBulletin Mod_rewrite Tutorial Hey guys. I fixed the backslash stripping problem. Sorry about that! |
| ||
| Re: [Revised] vBulletin Mod_rewrite Tutorial Quote:
$userinfo['where'] = "<a href=\"t$threadid-" .mod_rewrite_title($threadtitle). ".html\" title=\"$threadpreview\">$threadtitle</a> "; That line is what works. |
| ||
| Re: [Revised] vBulletin Mod_rewrite Tutorial hello all... I am thinking of adding vBadvanced CMPS and was wondering if any one is also using it with this Mod_rewrite or have any idea if it will work or not, or any problems that can happen. |
| ||
| Re: [Revised] vBulletin Mod_rewrite Tutorial Anyone noticed that using this or KeithMcL's hack will close out user who don't use cookies and need sessionhashes? (?) |
| ||
| Re: [Revised] vBulletin Mod_rewrite Tutorial If it's not a silly question, how would the the file "external.php" need to be modded, so that RSS feed of the forums would show the HTML threads, rather than the dynamic php URLs? |
| ||
| Re: [Revised] vBulletin Mod_rewrite Tutorial In external.php, echo "\t\t<link>$vboptions[bburl]/showthread.php?t=$thread[threadid]&goto=newpost</link>\r\n";would need to be replaced with echo "\t\t<link>$vboptions[bburl]/newpostinthread$thread[threadid].html</link>\r\n"; and echo "\t\t<guid isPermaLink=\"false\">$vboptions[bburl]/showthread.php?t=$thread[threadid]</guid>\r\n";would need to be replaced with echo "\t\t<guid isPermaLink=\"false\">$vboptions[bburl]/thread$thread[threadid].html</guid>\r\n"; |
| ||
| Re: [Revised] vBulletin Mod_rewrite Tutorial Dani, as ever, you are a star. :) |
| ||
| Re: [Revised] vBulletin Mod_rewrite Tutorial Aww, thanks Brian :) |
| ||
| Re: [Revised] vBulletin Mod_rewrite Tutorial Dani, just one small issue with external.php - when calling up syndicated content for individual vB3 sub-forums, you use something like: external.php?forumids=38 to call up a feed of that subforums. However, it doesn't seem to like this on the workaround to static HTML. I *presume* it's an issue to be corrected with .htaccess, but I'm not quite sure about how to go about it. Would you possibly have any suggestion? |
| ||
| Re: [Revised] vBulletin Mod_rewrite Tutorial Alright im implementing this new revised on a new site of mine, and it doesnt really go smoothly, had to figure alot of things out myself :( Btw the htaccess code was wrong i thought, as the threads you clicking into will have the title in the filename, you need something like this RewriteEngine on Im having this error "Parse error: parse error, unexpected T_STRING in /home/musicp/public_html/forums/includes/functions_online.php on line 164" when i go to who online or try to view a profile. Im really quite new to PHP, any idea guys ? |
| ||
| Re: [Revised] vBulletin Mod_rewrite Tutorial Good catch on that one Nordinho: Dani: this (probably) should be edited into the original post of this thread... |
| ||
| Re: [Revised] vBulletin Mod_rewrite Tutorial Got a problem. The rewite works fine, except that I'm seeing duplicate forum names. Any idea what I need to edit to fix this? www.clantt.com/vb/ is the url in question. Thanks in advance. Nice work. |
| ||
| Re: [Revised] vBulletin Mod_rewrite Tutorial Excellent tutorial...nice job. Should be very handy..I might try this |
| ||
| Re: [Revised] vBulletin Mod_rewrite Tutorial I agree with ewebtalk great tutorial! |
| ||
| Re: [Revised] vBulletin Mod_rewrite Tutorial I just installed the first VB forum that I own yesterday (www.mysportsforum.com) and this tutorial is DA BOMB baby! Thanks everybody! |
| ||
| Re: [Revised] vBulletin Mod_rewrite Tutorial **From the original thread Sorry to be a pain but I would love this hack to work but I have obviously done something wrong the forums come up correctly but I get a 404 error on every page. I have redone the hack from start three times now but the same thing always happens You can see at www.forums.ic-games.co.uk Any idea whats up? I have tried to read as much of this thread as I can put its getting on 12 pages and I may have missed something. Any help appreciated |
| ||
| Re: [Revised] vBulletin Mod_rewrite Tutorial How would I know that rewrites are activated on the server? Having problems doing this hack yet everyone else has success :p My last guess is that I cannot do this on our server? However the "/" error is still not fixed on the instructions and the last code changes feature repeated steps. Could someone clean up the original instructions as its a nightmare in its current form and obviously people (me anyway :p) are still visiting this thread for the first time :( |
| ||
| Re: [Revised] vBulletin Mod_rewrite Tutorial Quote:
|
| ||
| Re: [Revised] vBulletin Mod_rewrite Tutorial Quote:
|
| ||
| Re: [Revised] vBulletin Mod_rewrite Tutorial Easy way to check if it's working or not is to upload the phpinfo file. Search the results for mod_rewrite. If it's listed an installed module under the Apache heading then it's there and running, if it doesn't show up then it hasn't been installed. |
| ||
| Re: [Revised] vBulletin Mod_rewrite Tutorial Does this thread/method supercede the one started by cscgal? |
| ||
| Re: [Revised] vBulletin Mod_rewrite Tutorial In the multiple pages of replies to the original thread, many amendments / other ideas were discussed. This thread simply implements some of those other ideas, so one doesn't have to read through so many posts. |
| ||
| Re: [Revised] vBulletin Mod_rewrite Tutorial okay thanks nice job on the site too |
| ||
| Re: [Revised] vBulletin Mod_rewrite Tutorial Small issue. I did everything, ran it, looked fine got error pages. Changed the .htaccess as suggested by another poster - looked great. One problem remains One of my forum "headers" and one of my forum "links" shared the same name, so the generated HTML was identical for two different sections. I went into the admin section and renamed the forum link prt to add an additional word but the html didn't update leaving two links with the same name. As a result clicking either of these givees a popup saying: Quote:
|
| ||
| Re: [Revised] vBulletin Mod_rewrite Tutorial Quote:
Actually looking further into it the original file name has a semi colon : in it. I'm wondering if that is causing a problem? |
| All times are GMT -4. The time now is 6:52 pm. |
Forum system based on vBulletin Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
©2003 - 2009 DaniWeb® LLC