2012-02-22 4 views
0

Im utilisant ce plugin Joomla 1.5 pour faire des redirections. Fonctionne bien, mais il renvoie un statut de redirection "303 voir autre" au lieu de la SEO friendly 301comment changer 303 rediriger vers un 301 Redirect en PHP

Y at-il quelque chose qui peut être fait pour le code ci-dessous pour le plugin pour en faire une redirection 301?

<?php 
/** 
* JRedirect plugin 
* 
* @author Ross Farinella 
* @version 1.0.0 
* @license GPL 
*/ 

defined('_JEXEC') or die('Restricted access'); 

global $mainframe; 
$mainframe->registerEvent('onAfterRoute', 'plgSystemCheckJRedirect'); 

/** 
* Checks to see if the current URL being requested is one of the "special" URLs 
* and redirects the application as necessary 
*/ 
function plgSystemCheckJRedirect() 
{ 
global $mainframe; 

// get the plugin parameters 
$tmp = JPluginHelper::getPlugin("system","jredirect"); 
$params = new JParameter($tmp->params); 

// get the current URI 
$current = JRequest::getURI(); // "/something.html" 

$urls = $params->get('urls'); 
$urls = explode("\n",$urls); 
foreach($urls as $url) 
{ 
    // get the user-entered urls 
    list($toCheck,$toRedirect) = explode("|",$url); 

    // check if we're at this url 
    if($current == "/".$toCheck) { 
     // do the redirect 
     $mainframe->redirect($toRedirect); 
    } 
} 
} 


?> 
+1

Nous devons voir les intérieurs de t Il fonctionne '$ mainframe-> redirect()', mais cela devrait être aussi simple que d'ajouter un 'header (" HTTP/1.1 301 Moved Permanently ");' call avant le 'header (" Location: ")'. –

+0

De nombreux autres exemples dans les questions "connexes" à droite d'ici ont des exemples sur la façon dont cela est fait, quand vous trouvez le bon endroit pour le placer. –

+0

Merci Michael, Im essayant juste de trouver où ajouter cela, Im utilisant un plugin tiers donc je vais supposer que je ne peux pas mettre ce morceau de code dans le fichier ci-dessus – Simsan

Répondre

3

Selon le Joomla documentation (ou plutôt, the source), vous devriez être en mesure de le faire en changeant

$mainframe->redirect($toRedirect); 

à

$mainframe->redirect($toRedirect,'','message',true); 

Alors:

<?php 
/** 
* JRedirect plugin 
* 
* @author Ross Farinella 
* @version 1.0.0 
* @license GPL 
*/ 

defined('_JEXEC') or die('Restricted access'); 

global $mainframe; 
$mainframe->registerEvent('onAfterRoute', 'plgSystemCheckJRedirect'); 

/** 
* Checks to see if the current URL being requested is one of the "special" URLs 
* and redirects the application as necessary 
*/ 
function plgSystemCheckJRedirect() 
{ 
global $mainframe; 

// get the plugin parameters 
$tmp = JPluginHelper::getPlugin("system","jredirect"); 
$params = new JParameter($tmp->params); 

// get the current URI 
$current = JRequest::getURI(); // "/something.html" 

$urls = $params->get('urls'); 
$urls = explode("\n",$urls); 
foreach($urls as $url) 
{ 
    // get the user-entered urls 
    list($toCheck,$toRedirect) = explode("|",$url); 

    // check if we're at this url 
    if($current == "/".$toCheck) { 
     // do the redirect 
     $mainframe->redirect($toRedirect,'','message',true); 
    } 
} 
} 


?> 
+0

Cela a fonctionné parfaitement. Merci! – Simsan