php salyangozlar oluşturmak için nasıl

4 Cevap php

im bir senaryo yazmaya çalışıyorum, o bu gibi sülük şekilde adresler yazılarak yapabilirsiniz:

http://www.mysite.com/mystorytitle/

ve benim kodları bu yaptım:

 RewriteRule ^(.*)\/$  app=News&file=article&title=$1  [L] 

ve benim php kodları, i gibi öykünün başlığı dışında bir yudum oluşturuldu:

$slug_title = mysql_real_escape_string($mtitle);
$show= "<a href=\"$slug_title/\">$mtitle</a>";

i slugged linke tıkladığınızda, herhangi bir stil ve JavaScripts ve görüntüler olmadan sayfasına gider ama sürece şimdi her şey yolunda.

Sorun bir seviyeye değişti css dosyaları ve ... için çünkü yolu olduğundan emin im

as i'm in this path : http://www.mysite.com/ایمیل/

eğer öyleyse bu gibi css dosyası gerektiren sayfası:

<link rel="StyleSheet" href="includes/NAV.css" type="text/css" />

bir seviye değişti ve bu çalıştı yapmak için, ben gibi bir seviye geri gelmelidir:

<link rel="StyleSheet" href="../includes/NAV.css" type="text/css" />

sanırım, bu bir klasör olarak concidered değil bir rewrited yol

ama im emin olun bu komut işi yapmak için başka bir yol olmalı without changing all paths

şimdiden teşekkürler

4 Cevap

Sen taban URL (zaman eğik çizgi çoğu, ama her zaman değil) Önlerine gerekir.

Aşağıdaki gibi (sitenizin bir dizinde bulunuyorsa bile çalışacak genel ifadeyi) alabilirsiniz:

$baseUrl = rtrim((string)dirname($_SERVER['SCRIPT_NAME']), '/\\') . '/';

Ve sonra yazacağım:

<link rel="StyleSheet" href="<?php echo $baseUrl ?>includes/NAV.css" type="text/css" />

Bir başka olasılık kafa taban etiketini kullanmaktır:

<base href="<?php echo $baseUrl ?>" />

Bu kod sadece bir satır değişen bir avantaja sahiptir.

Sen Furthur gitmek ve bunu yapmak için yarar yöntemi yapabilirsiniz:

function baseUrl($url = '', array $query = null, $fragment = null)
{
    static $baseUrl = rtrim((string)dirname($_SERVER['SCRIPT_NAME']), '/\\') . '/';

    if ($query !== null) {
        $url .= '?' . http_build_query($query);
    }

    if ($fragment !== null) {
        $url .= '#' . (string)$fragment;
    }

    $url = $baseUrl . $url;
    $url = trim(str_replace('\\', '/', (string)$url));

    return $url;
}

Zaten yazdığım gibi tarayıcı size sülük adını farklı bir dizinde olduğunu düşünüyor, çünkü bu olacak.

Sen something CSS URL'ler yapmak, ya da zaten yapmak gibi nispeten ../includes/ onlara başvurmak zorunda, ya da /includes/NAV.css (etki kısmı isteğe bağlı olmaktan mutlak başvurular kullanacak .)

Bu bir PHP projesi ise, ben web kök içeren bir merkezi ayarlar dosyası oluşturmak:

define("SITE_WEBROOT", "http://www.domain.com");

ve o ayara göre bütün kaynaklarını referans:

<link rel="stylesheet" type="text/css" 
      href="<?php echo SITE_WEBROOT; ?>/includes/NAV.css">

Sadece /static/image.png gibi ... tüm kaynak URI'lerinin önce eğik çizgi ekleyin. Bu kökünden tarayıcı isteğini o yapacak (yani www.site.com/path)

Ayrıca baş bölümünde baz etiketini kullanabilirsiniz, daha sonra tüm göreli bağlantılar, stylesheets ve görüntüler oradan gidecek. Biz genellikle bunu. Bu istek URL ve index.php FILE yola dayalı tüm projelerde otomatik olarak ayarlanır

For example: