If anybody want to redirect error404 to a search page, then here is a trick for you.
I have recently changed my blog to a Q2A site. But there was a problem : Site was already indexed by gooogle and there are many pages of my site are at the top of google search. So, I change my site to Q2A then, its not possible to keep same link as my previous script. As a result my site ranking and visitors will decrease.
So, I thought, Insted of sending user to a error404 page why not redirect them to a search page.
yeak!!! sounds intersting laugh
I did this:
Simply replace whole code of
qa-include/qa-page-not-found.php
with this one:
<?php
/*
copyright was removed cuz i m not able to post more then 8000 chr
*/
if (!defined('QA_VERSION')) { // don't allow this page to be requested directly from browser
header('Location: ../');
exit;
}
require_once QA_INCLUDE_DIR.'qa-app-format.php';
require_once QA_INCLUDE_DIR.'qa-app-options.php';
require_once QA_INCLUDE_DIR.'qa-app-search.php';
// Perform the search if appropriate
// Pull in input parameters
$urlfor = strtolower($_SERVER['REQUEST_URI']);
$urlfrom404 = rtrim($urlfor,"/");
$tokens = explode('/', $urlfrom404);
$keys = array_keys($tokens);
$last = end($keys);
$removeHyphen = strtr($tokens[$last], '-', ' ');
$inquery=$removeHyphen;
$userid=qa_get_logged_in_userid();
$start=qa_get_start();
$display=qa_opt_if_loaded('page_size_search');
$count=2*(isset($display) ? $display : QA_DB_RETRIEVE_QS_AS)+1;
// get enough results to be able to give some idea of how many pages of search results there are
// Perform the search using appropriate module
$results=qa_get_search_results($inquery, $start, $count, $userid, false, false);
// Count and truncate results
$pagesize=qa_opt('page_size_search');
$gotcount=count($results);
$results=array_slice($results, 0, $pagesize);
// Retrieve extra information on users
$fullquestions=array();
foreach ($results as $result)
if (isset($result['question']))
$fullquestions[]=$result['question'];
$usershtml=qa_userids_handles_html($fullquestions);
// Report the search event
qa_report_event('search', $userid, qa_get_logged_in_handle(), qa_cookie_get(), array(
'query' => $inquery,
'start' => $start,
));
// Prepare content for theme
$qa_content=qa_content_prepare(true);
$qa_content['search']['value']=$removeHyphen;
if (count($results))
$qa_content['title']=qa_lang_html_sub('main/results_for_x', qa_html($inquery));
else
$qa_content['title']=qa_lang_html_sub('main/no_results_for_x', qa_html($inquery));
$qa_content['q_list']['form']=array(
'tags' => 'METHOD="POST" ACTION="'.qa_self_html().'"',
'hidden' => array(
'code' => qa_get_form_security_code('vote'),
),
);
$qa_content['q_list']['qs']=array();
$questionoptions=qa_post_html_defaults('Q');
foreach ($results as $result)
if (!isset($result['question'])) { // if we have any non-question results, display with less statistics
$questionoptions['voteview']=false;
$questionoptions['answersview']=false;
$questionoptions['viewsview']=false;
$fakeoptions=$questionoptions;
$fakeoptions['whoview']=false;
$fakeoptions['whenview']=false;
$fakeoptions['whatview']=false;
break;
}
foreach ($results as $result) {
if (isset($result['question']))
$fields=qa_post_html_fields($result['question'], $userid, qa_cookie_get(), $usershtml, null, $questionoptions);
elseif (isset($result['url']))
$fields=array(
'what' => qa_html($result['url']),
'meta_order' => qa_lang_html('main/meta_order'),
);
else
continue; // nothing to show here
$fields['title']=qa_html($result['title']);
$fields['url']=qa_html($result['url']);
$qa_content['q_list']['qs'][]=$fields;
}
$qa_content['page_links']=qa_html_page_links(qa_request(), $start, $pagesize, $start+$gotcount,
qa_opt('pages_prev_next'), array('q' => $inquery), $gotcount>=$count);
if (qa_opt('feed_for_search'))
$qa_content['feed']=array(
'url' => qa_path_html(qa_feed_request('search/'.$inquery)),
'label' => qa_lang_html_sub('main/results_for_x', qa_html($inquery)),
);
if (empty($qa_content['page_links']))
$qa_content['suggest_next']=qa_html_suggest_qs_tags(qa_using_tags());
return $qa_content;
/*
Omit PHP closing tag to help avoid accidental output
*/
here is demo:
http://tovolt.com/2013/02/best-online-shopping-site/