Ben mod_rewrite'ı güvenebilirsiniz?

6 Cevap php

Ben oluşturmak web siteleri için küçük bir PHP çerçeve inşa ve mod_rewrite en Shell üzerinde availabe olmanın güvenebilirsiniz olmadığını bilmek istiyordu.

  • Is ist even a good idea using it? There are many good points already (one entry point, "beautiful", readable URLS)

  • Nerede availabe değil mi?

  • Mod_rewrite o sahibesi mevcut değilse ben çerçevesinde bir alternatif içermelidir?

6 Cevap

mod_rewrite genel olarak kullanılabilir. Bu ana bilgisayarlarının sunucularında mevcut değilse, onları bırakın.

MOD_REWRITE modülü barındıran en Apache üzerinde bu gün genellikle avaiable. Ancak, onun yokluğunda geçici bir çözüm o kadar da zor değil, ve bunu yaparak insanların / onu kapattım bir konak / BT personeli veya bir ana bilgisayar / BT personeli çalıştıran IIS, vb sıkışmış sağlamak

Çoğu yeni çerçeveler veya (Bootstrapping, frontloading desen, vb denir) tek bir ön yüklemeli bir PHP dosyası ile tüm URL istekleri yakalamak için bugün kullanımı mod_rewrite'ın inşa uygulamaları. Etki alanı adı değil URL kısmı bazı nesne ayrıştırılır ve URL'ye erişim gerektiğinde bu nesne kullanılır.

MOD_REWRITE, formun URL'ler kullanılabilir DEĞİL olduğunda

http://example.com/index.php/foo/baz/bar

yerine kullanılır. Yukarıdaki URL için bir istek index.php dosyası tarafından işlenir. Sonra, sizin gibi sunucu değişkenlerden birini ayrıştırmak

$_SERVER['REQUEST_URI'], $REQUEST['PATH_INFO'], etc.

Bazı nesne içine (aynı nesne Eğer mod_rewrite olsaydı kullanmak istiyorum) ve URL bilgilere erişim gerektiğinde bu nesneyi kullanabilirsiniz.

Her iki şekilde çerçeve / uygulama kalanı sadece nesneye erişir ve bilgi orada var nasıl endişelenmenize gerek yok.

Additional Reading

Eğer halka açık bir uygulama geliştirme yapıyorsanız, o mod_rewrite mevcut ve alternatif desteklemiyor olabilir düşünmelisiniz. AcceptPathInfo biridir.

IIS veya sorun var olacak başka bir şey üzerinde çalışmak gerekiyorsa, ancak PHP de bu kullanabilirsiniz böylece mod_rewrite sadece apache için:

private function getURI()
{
    $uri = "";

    if (isset($_SERVER['PATH_INFO']))
        $uri = getValueFrom($_SERVER, 'PATH_INFO', @getenv('PATH_INFO'));
    elseif (isset($_SERVER['ORIG_PATH_INFO']))
        $uri = getValueFrom($_SERVER, 'ORIG_PATH_INFO', @getenv('ORIG_PATH_INFO'));
    else
        $uri =  "";

    $scriptname = basename($_SERVER['SCRIPT_FILENAME']);
    if (strpos($uri, $scriptname) > -1)
        $uri = substr($uri, strpos($uri, $scriptname) + strlen($scriptname), strlen($uri));

    return $uri;
}

URL'leri değiştirmek daha iyi bu var çünkü, iyi bir uygulama aslında geniş web üzerinde kullanılan ve bir SEO recomendation olduğunu:

domain.com / aboutus

Buna

domain.com / index.php? app = ana & action = show & id = 1

Çoğu sunucularında kullanılabilir - ama öyle değil şüpheleniyorsanız, bağlantıları almak için dinamik bir şekilde yapmak gerekir - Eğer mod_rewrite mevcut olmadığını söylüyor herşeyden önce değiştirmek önceden tanımlanmış sabit olabilir. Daha sonra ne olacağını belirlemek için yol olarak o sabiti kullanarak URL'leri getirebilir.

Ben herhangi bir iyi uygulama mod_rewrite faydalanmak gerektiğini düşünüyorum, ve web host çoğu bu sunuyoruz. Sundukları yoksa, onları olsun.

Ayrıca, sadece mod_rewrite bir kullanmak için iyi bir seçenek değil, aynı zamanda bu php_value max_execution_time ve böylece size ortamınızı özelleştirme emin olmak gibi diğer php ayarları değil uygulama amacına uygun.