Domanda

Uso un'installazione drupal 4.7 da molti anni e ho avuto un recente problema. Cioè, gli URL riscritti ora mostrano questi caratteri:? Q = in ogni URL generato da drupal come segue: http://sitename.com/?q=path/alias , dove prima sarebbe: http : //sitename.com/path/alias .

La mia ipotesi migliore sul perché ciò potrebbe accadere è che di recente ho iniziato a utilizzare un codice PHP per aggiungere uno stile di collegamento specifico al contesto in pochi blocchi laterali. Ecco il codice:

<?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>

O più recentemente:

<?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>

Potrebbe essere questo il problema? In tal caso, qualche idea sulle correzioni?

È stato utile?

Soluzione

Non credo che il tuo frammento lo stia causando. Legge solo dal database; non apporta modifiche agli URL. Mod_rewrite è ancora abilitato? Ciò può essere causato da una recente modifica alla configurazione del server. Controlla l'output di phpinfo().

A proposito, l'opzione $absolute per url() è passata come argomento separato in Drupal 4.7, non nella matrice $options. La tua chiamata dovrebbe essere:

url($path, $absolute=TRUE);

Altri suggerimenti

Sto pensando che i tuoi URL puliti siano appena rotti. Quando non hai gli URL puliti attivati, tutti i tuoi URL appariranno come http://example.com/?q=/foo/bar/baz. Le regole di riscrittura traducono le richieste da http://example.com/foo/bar/baz a http://example.com/foo/bar/bazz per essere elaborate internamente.

Devi tornare indietro e assicurarti che le tue regole di riscrittura funzionino ancora (puoi anche andare su <=>?) e che Drupal abbia gli URL puliti attivati.

Vai in admin / settings e assicurati che Clean URLs sia attivato.

Prova quanto segue:

  1. Carica di nuovo un file .htaccess non modificato nella radice del sito

  2. Assicurati che apache abbia mod_rewrite disponibile. Se hai accesso alla shell ed è una macchina Ubuntu / Debian, basta

    a2enmod rewrite

  3. Controlla se l'opzione è abilitata su admin / settings

  4. Crea un semplice file .php nella cartella principale e digita:

    phpinfo ();

Quindi vedi se il modulo funziona.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top