. Htaccess mod php veya bir şey kullanarak otomatik yeniden?

3 Cevap php

Ben bir kullanıcı sayısını, gibi web sayfası ile her var http://www.mysite.com/folder/artist%5Fid.php?id=33

Kullanıcıların http://www.mysite.com/userguy o yukarıdaki sayfaya yönlendirme gibi kendi kolay URL'yi ayarlamak gerekiyor.

Ben RewriteRule ile. Htaccess elle bu yazmak için nasıl biliyorum ama, örneğin, kullanıcıların php ve javascript ile oluşturulmuş bir bütün olarak kontrol paneli var ve onları ismi kendileri seçmek ve kodu otomatik olarak içeri koymak için izin için gerekli hale geldi Ama ben Ben sadece, açık dosyanın çeşit yapmak şey yeniden, ya da ne güvenli gerektiğini kurma veya kodu aracılığıyla veya eğer. htaccess dosyasına ekleyerek kolay bir yöntem zaten varsa bir ipucu yok.

BTW, ben böyle onlara kendilerini sitemde varolan bir klasör veya php dosyası gibi aynı adlandırma gibi konular hakkında endişeli değilim. Bu bir problem olmamalı yani kullanıcıların sınırlı ve onayına tabidir.

3 Cevap

Değiştirerek, ve PHP bir tür "yönlendirici" kullanırsınız kullanarak. Htaccess dosyasını kaydederek, açılış içermeyen uygun bir çözümdür. Aşağıdaki düşünün:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

Ne yapar / index.php? Q = userguy için / userguy gibi bir yeniden yazma şeydir, ancak eğer / userguy bir dizin veya dosya sistemi var dosyası değil. Bu, kullanıcı için şeffaf olur. index.php sonra yapmak gibi bir şey için sorumlu olacaktır:

$path = $_GET['q'];
// Get router information using the $path variable.
$callback = get_callback_by_path($path);
// Assuming $callback is a function name. The function would print
// the page HTML or call into a theme layer or do whatever it needs to do.
call_user_func($callback);

Fonksiyonu get_callback_by_path it "userguy" ne yapması gerektiğini anlamaya yapması gereken neyse yapar özel mantık olacaktır. örneğin işlev adları ve işlevin adını döndürmek için bir veritabanı eşleme yolları sorgulayabilirsiniz.

Orada daha fazla tabii ki, ama bu fikir.

Daha sonra "çeviri" yapacak tek bir php komut dosyası http://www.mysite.com/userguy gibi tüm istekleri göndermek için bir yeniden yazma kuralı kurmak olabilir. Mutlaka bir yeniden yazma kuralı aracılığıyla yapılabilir zorunda değildir, aynı zamanda bir ErrorDocument handler olabilir. Bu durumda özgün istek yol $ _SERVER ['REQUEST_URI'] bulunabilir.

Uygun URL'yi dönüştüren bir komut dosyası aramak için RewriteMap direktifini kullanın.