Question

J'utilise une installation Drupal 4.7 depuis de nombreuses années et j'ai récemment rencontré un problème. Autrement dit, les URL réécrites affichent désormais les caractères suivants:? Q = dans chaque URL générée par Drupal, comme suit: http://sitename.com/?q=path/alias , où il se trouvait auparavant: http : //sitename.com/path/alias .

La meilleure raison pour laquelle cela pourrait se produire est que j'ai récemment commencé à utiliser du code PHP pour ajouter un style de lien spécifique au contexte dans quelques blocs latéraux. Voici le code:

<?php   $alias= $_GET['q']; ?>

<a <?php $pos=strpos($alias,"1234"); // node number
if(!$pos == false) {
echo 'style="color:black"'; 
} ?> href="internal/link/alias">Internal Link</a>

Ou plus récemment:

<?php $path = isset($_GET['q']) ? $_GET['q'] : '<front>';
$alias = url($path, array('absolute' => TRUE)); ?> 

<a <?php $pos=strpos($alias,"internal/link/alias"); 
if(!$pos == false) {
echo 'style="color:black"';
} ?> href="internal/link/alias">Internal Link</a>

Cela pourrait-il être le problème? Si oui, des idées de solutions?

Était-ce utile?

La solution

Je ne pense pas que votre extrait en soit la cause. Il ne lit que dans la base de données; il ne modifie pas les URL. Mod_rewrite est-il toujours activé? Cela peut être dû à une modification récente de la configuration du serveur. Vérifiez la sortie de phpinfo().

Au fait, l'option $absolute pour url() est transmise en tant que argument séparé dans Drupal 4.7, pas dans le tableau $options. Votre appel devrait être:

url($path, $absolute=TRUE);

Autres conseils

Je pense que vos URLs propres sont simplement cassées. Lorsque vous n'avez pas activé les URL propres, toutes vos URL ressemblent à http://example.com/?q=/foo/bar/baz. Les règles de réécriture traduisent les demandes de http://example.com/foo/bar/baz en http://example.com/foo/bar/bazz à traiter en interne.

Vous devez revenir en arrière et vous assurer que vos règles de réécriture fonctionnent toujours (pouvez-vous même aller à <=>?) et que Drupal a activé les URL saines.

Allez dans admin / settings et assurez-vous que l'option Nettoyer les URL est activée.

Essayez ce qui suit:

  1. Téléchargez à nouveau un fichier .htaccess non modifié à la racine du site

  2. Assurez-vous que mod_rewrite est disponible sur votre apache. Si vous avez un accès shell et qu’il s’agit d’une machine Ubuntu / Debian, faites simplement

    a2enmod rewrite

  3. Vérifiez si l'option est activée sur admin / settings

  4. Créez un fichier .php simple sur le dossier racine et tapez:

    phpinfo ();

Il suffit ensuite de voir si le module fonctionne.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top