Mod yeniden yazma / temiz URL'ler sorunu

4 Cevap php

Ben yıllardır bir drupal 4.7 yükleme kullanarak oldum ve yeni bir sorun kırpma up vardı. ? Q = aşağıdaki gibi her drupal URL'yi oluşturulur: o Yeniden URL'ler artık bu karakterleri gösterdiklerini, bir http://sitename.com/?q=path/alias, nerede olacağını öncesi: http://sitename.com/path/alias.

Bu oluyor olabilir neden olarak benim en iyi tahminim, geçenlerde bir kaç sideblocks içinde bağlama özgü link stil eklemek için bazı PHP kodu kullanarak başlamış olmasıdır. İşte kod:

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

Ya da daha yakın zamanda:

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

Bu sorun olabilir? Eğer öyleyse, düzeltmeler hakkında herhangi bir fikir?

4 Cevap

Ben Snippet'iniz neden olduğunu sanmıyorum. Sadece veritabanından okur; Bu URL'ler değişiklik yapmaz. Mod_rewrite hala etkin mi? Bu sunucu geneli için yeni bir değişiklik neden olabilir. Çıkışını kontrol phpinfo().

Bu arada, $absolute url() için seçenek passed as a separate argument Drupal 4.7 'de değil, $options dizi bulunmaktadır. Sizin çağrı olmalıdır:

url($path, $absolute=TRUE);

Senin temiz URL'ler sadece kırık olduğunu düşünüyorum. Temiz URL'ler açık olmadığında, tüm URL'ler http://example.com/?q=/foo/bar/baz gibi görünecektir. Yazma kuralları http://example.com/foo/bar/baz into http://example.com/?q=/foo/bar/baz dahili işlenecek istekleri çevirmek.

Geri dönün ve yeniden yazma kuralları hala çalıştığından emin olun (hatta için http://example.com/foo/bar/bazz? Gidebilir) ve Drupal temiz URL'ler açık olduğunu gerekir.

Admin / ayarlarına gidin ve emin olun temiz URL'leri açıktır.

Aşağıdaki deneyin:

  1. Yine sitenin köküne bir değiştirilmemiş. Htaccess dosyası yükle

  2. Apache mod_rewrite mevcut olduğundan emin olun. Eğer kabuk erişimi var ve bir Ubuntu / Debian makine, sadece do

    a2enmod rewrite

  3. Seçeneği yönetici / ayarlarına etkin olup olmadığını kontrol edin

  4. . Kök klasöründe ve türüne basit bir php dosyası oluşturun:

    phpinfo ();

Modül çalışıyor eğer sadece görmek.