web-dev-qa-db-fra.com

Rewrite Preview URL pour inclure index.php

Notre site Web WordPress a une page d'accueil HTML statique. Une demande de domaine renvoie la page index.html.

Cela a bien servi nos objectifs, mais a posé un problème lorsque vous essayez de prévisualiser un message ou une page lors de la modification. Étant donné que les URL de prévisualisation n'incluent pas index.php, toutes les demandes de prévisualisation affichent la page d'accueil statique; par exemple.,

http://www.example.com/?page_id=7848&preview=true

OR

http://www.example.com/?post_type=solution&p=6480&preview_id=6480&preview_nonce=730eb2844c&preview=true

Les deux affichent la page d'accueil. Insérer manuellement index.php entre www.example.com/ et ?<querystring> fonctionne et affiche l'aperçu de la page, mais c'est pénible.

J'ai essayé ce qui suit dans functions.php, ce qui met à jour le fichier .htaccess, mais la page d'accueil apparaît toujours.

function custom_rewrite_preview( )
{
  add_rewrite_rule(
    '(.*)\?(.+)&preview=true$',
    '$1index.php?$2&preview=false',
    'bottom'
  );
}
add_action( 'init', 'custom_rewrite_preview' );

Je ne sais pas si la fonction et/ou la regex sont fausses ou si la réécriture doit avoir lieu à un moment différent.

1
L Ebert

Ne changez pas vos réécritures. Placez le contenu du fichier HTML dans un fichier de modèle front-page.php de votre thème.

1

Vous pouvez ajouter la règle de réécriture suivante dans votre .htaccess:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{QUERY_STRING} ^taxo=([^&]+)&([^=]+)=([^&]+)&([^=]+)=([^&]+)&([^=]+)=(.*)$
RewriteRule ^/?$ /%1/%2/%3/%4/%5/%6/%7? [L,R=301]
</IfModule>

Effacez le cache de votre navigateur et tout domaine qui suit cette structure:

http://www.example.com/?page_id=7848&preview=true

Va rediriger vers:

http://www.example.com/index.php?page_id=7848&preview=true

Cela a été vérifié et testé de mon côté en utilisant le testeur htaccess .