Is there a way to 301 redirect invalid forum, thread, post with .htaccess.
I am using php 301 redirect:
header("HTTP/1.1 301 Moved Permanently");
header("refresh:3; {$mybb->settings['bburl']}");
echo 'Invalid Thread you will be redirected to homepage after 3 seconds.';
exit();
But it causing problems with IE and Google shows errors!
I really think you should use the Location instead of refresh. There are up to 3 parameter's of the header function so you could actually send a 301 status code with it.
<?php
header("Location: {$mybb->settings['bburl']}", true, 301);
Additionally, you shouldn't be having any other code execute when you use a redirect.
http://www.php.net//manual/en/function.header.php
Could you help please. I have replaced all calls to error inside forumdisplay.php and showthread.php with:
header("Location: {$mybb->settings['bburl']}", true, 301);
so instead of calling error for invalid forum, thread, post it called header BUT the problem is Google is showing lots of errors: Not followed 301
How can I make this right?
It might take time for it to update its site map? Otherwise I'm not sure why it wouldn't follow the 301.
Do you know how can I check if the forum exists before all functions start checking their things. The problem is header is not run in the first place that is why it's not working.
If I hook to
global_start will this be checked before everything:
$fid = intval($mybb->input['fid']);
$foruminfo = get_forum($fid);
Well there is a cache for the forums. That would include its primary key (fid) so you'd be able to check that against the query string.
I think you'd be able to do something like this to get the forum cache into an array. You might want to use var_dump on the variable to see what the syntax of it will look like.
$forums = $cache->read("forums");
I think the structure would be $forums[$fid] = $fid, but I'm not 100% sure.
Is this what I have to use?
$forums = $cache->read("forums");
$forums[$fid] = $fid
if(!$forums[$fid])
Something like that. You'd have to see what $forums would actually have for keys and values. Using the var_dump function on that variable will assist you with that.
Do I have to hook to forumdisplay_start or to global_end ???????
I will also have to add $cache to:
global $mybb, $cache;
Either should work and yes you will have to add $cache as a global in your function.