web-dev-qa-db-fra.com

mod_rewrite activé mais les liens permanents montrent index.php

Je viens d'installer un blog d'amis sur ma pile LAMP, sur laquelle mod_rewrite est activé (je l'utilise pour des URL propres sur mes installations Drupal sur le même serveur). Pour une raison quelconque, WordPress (3.0.3) ne reconnaît pas que mod_rewrite est activé. Dans le menu Permaliens, il affiche les options pour les permaliens PATHINFO (avec index.php précédant la chaîne d’URL).

Mon correctif pour le moment consistait simplement à utiliser le champ Structure personnalisée et à entrer ce que je voulais moins à la partie index.php que WordPress semble vouloir insérer, ce qui fonctionne, mais j'aimerais obtenir un correctif pour ce problème.

Est-ce une anomalie 3.0.3? Je n'ai pas eu beaucoup de temps pour étudier la configuration de mon serveur, mais toute aide serait très appréciée.

4
bhamrick

Le résultat de $ _SERVER ['SERVER_SOFTWARE'] est WebServerX

Cela ressemble à votre problème - consultez cette ligne dans wp-includes/vars.php:

/**
 * Whether the server software is Apache or something else
 * @global bool $is_Apache
 */
$is_Apache = (strpos($_SERVER['SERVER_SOFTWARE'], 'Apache') !== false || strpos($_SERVER['SERVER_SOFTWARE'], 'LiteSpeed') !== false);

Je pense que vous devrez remplacer cette variable manuellement, soit dans un plugin, soit dans le functions.php de votre thème:

global $is_Apache;
$is_Apache = true;

Accessoires de @John P Bloch:

La seule fois où il ajoutera automatiquement 'index.php' à un lien permanent, c'est si $ is_Apache renvoie false.

4
TheDeadMedic

Vous pouvez également ajouter la ligne de code suivante à votre fichier functions.php:

add_filter( 'got_rewrite', '__return_true', 999 );

Nous faisons cela pour que WordPress fonctionne bien avec nginx.

2
heintore