web-dev-qa-db-fra.com

Redirection des archives de types de messages personnalisés

J'ai eu un type de message personnalisé avec slug comme ( sometext ) que j'ai changé en ( someothertext ) Et ça marche très bien

Donc par exemple:

mes messages avec des URL comme

http://localhost/sometext/innerposts

est redirigé vers

http://localhost/someothertext/innerposts 

mais pas ma page d'archive

fondamentalement, je voudrais rediriger

http://localhost/sometext/ to
http://localhost/someothertext/ 

dans mon fichier .htaccess j'ai essayé d'ajouter une chaîne pour que cela fonctionne

RewriteRule ^/sometext$ ^/someothertext/$ [R=301,L]

mais ça échoue.

Je suis très pauvre avec les réécritures .htaccess. J'apprécierais vraiment si quelqu'un m'aidait avec ça.

Merci.

1
Kuldeep Daftary

Le lien vers la page d'archive est enregistré dans les règles de réécriture de WordPress. Ces règles permettent de localiser plusieurs emplacements à l’avant de votre système WordPress. Lorsque vous modifiez la slug d'un type de publication personnalisé, les pages normales seront redirigées directement vers le nouvel emplacement, mais pas la page d'archivage, car les règles de réécriture ne sont pas régénérées.

Pour résoudre ce problème, allez dans Paramètres -> Permaliens et enregistrez à nouveau votre structure de liens permanents, rechargez votre page et la page d'archivage se chargera. correctement.

La règle de réécriture dans votre .htaccess ne sera pas nécessaire.

De plus, never ne mettez aucune règle de réécriture dans votre .htaccess, à l'exception de celles que WordPress y a écrites. Si vous souhaitez ajouter des règles, utilisez l’API Rewrite .

2
Mike Madern

Comme il a été mentionné. Ne mettez jamais de règles de réécriture dans votre .htaccess, utilisez plutôt Rewrite API . Pour atteindre votre objectif, utilisez le code suivant dans votre plug-in functions.php ou spécifique au site:

add_action( 'generate_rewrite_rules', 'my_rewrite_rules' );
function my_rewrite_rules( $wp_rewrite )
{
    $wp_rewrite->rules = array(
        'sometext/(.+?)/?$' => $wp_rewrite->index . '?someothertext='.$wp_rewrite->preg_index( 1 ),     
        'sometext/(.+?)/([0-9]{1,})/?$' => $wp_rewrite->index . '?someothertext='.$wp_rewrite->preg_index( 1 ). '&paged=' . $wp_rewrite->preg_index( 2 ),               
    ) + $wp_rewrite->rules;
}
0
david.binda