Frage

Ich habe eine Drupal 4.7 Installation seit vielen Jahren verwendet und haben ein neues Problem auftauchen musste. Das heißt, die neu geschrieben URLs nun diese Zeichen angezeigt wird:? Q = in jeder URL Drupal erzeugt wie folgt: http://sitename.com/?q=path/alias , wo, bevor es wäre: http : //sitename.com/path/alias

.

Meine beste Vermutung, warum dies passiert sein könnte, ist, dass ich vor kurzem einige PHP-Code begann mit kontextspezifischen Link Styling innerhalb weniger sideblocks hinzuzufügen. Hier ist der 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>

oder in jüngerer Zeit:

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

Könnte dies das Problem sein? Wenn ja, irgendwelche Ideen über fixes?

War es hilfreich?

Lösung

Ich glaube nicht, Ihr Snippet es verursacht wird. Er liest nur aus der Datenbank; macht es keine Änderungen an URLs. Ist mod_rewrite noch aktiviert? Dies kann durch eine aktuelle Änderung der Server-Konfiguration verursacht werden. Überprüfen Sie die Ausgabe von phpinfo().

Durch die Art und Weise, die Option $absolute für url() ist als separates Argument übergeben in Drupal 4.7, nicht in der $options Array. Ihr Anruf sollte sein:

url($path, $absolute=TRUE);

Andere Tipps

Ich denke, dass Ihre saubere Urls nur gebrochen werden. Wenn Sie nicht sauber URLs aktiviert, werden alle URLs wie http://example.com/?q=/foo/bar/baz aussehen. Die Rewrite-Regeln übersetzen Anfragen von http://example.com/foo/bar/baz in http://example.com/?q=/foo/bar/baz intern verarbeitet werden.

Sie müssen zurück gehen und stellen Sie sicher, dass Ihre Rewrite-Regeln arbeiten nach wie vor (kann man sogar http://example.com/foo/bar/bazz gehen?) Und dass Drupal saubere URLs aktiviert hat.

Gehen Sie in admin / Einstellungen und stellen Sie sicher, reinigen URLs aktiviert ist.

Versuchen Sie Folgendes:

  1. Laden Sie eine unmodifizierte .htaccess-Datei in das Stammverzeichnis der Website wieder

  2. Stellen Sie sicher, dass Ihr Apache mod_rewrite zur Verfügung hat. Wenn Sie einen Shell-Zugang haben und es ist ein Ubuntu / Debian-Maschine, nur tun

    a2enmod Rewrite

  3. Überprüfen Sie, ob die Option auf admin / Einstellungen aktiviert ist

  4. Erstellen Sie eine einfache Php-Datei auf dem Stammordner und geben Sie:

    phpinfo ();

Dann einfach sehen, ob das Modul funktioniert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top