PHP ile bir url yeniden nasıl?

5 Cevap php

'Örneğin benim üyelerinden biri http://www.example.com/members/893674.php olduğunu varsayalım. Nasıl örneğin, http://www.example.com/myname olabilir böylece onları orada url özelleştirmek izin yok

Benim üye orada kendi özelleştirilmiş url olması için ne istiyorum sanırım. Benim dosyaları yeniden düzenleyerek bunu yapmak için daha iyi bir yolu var mı.

5 Cevap

Bir Ön Controller kullanmak olabilir, bu sadece PHP, özel URL'ler yapmak için ortak bir çözüm ve tüm dillerde kullanılmaktadır. İşte bir kılavuz: http://www.oreillynet.com/pub/a/php/2004/07/08/front_controller.html

Esasen her URL için denir bir index.php dosyası yaratacak, kendi iş URL ayrıştırma ve URL içeriğine tabanını çalıştırmak için hangi kod belirlemektir. Böylece http://www.example.com/index.php/myname veya http://www.example.com/index.php/about-us veya http://www.example.com/index.php/contact-us ve: Yani sitenizde URL'ler gibi bir şey olurdu. index.php TÜM URL'ler için denir.

Burada gördüğünüz, mod_rewrite kullanarak URL'den index.php kaldırabilirsiniz: http://www.wil-linssen.com/expressionengine-removing-indexphp/

Index.php her şeyi işaret etmek için bir yeniden yazma kuralı ekleyin. Sonra index.php içinde, url ve kapmak myname ayrıştırmak. Somekinda tabloda MyName bir yol arama ve bu yolu bulunur

RewriteEngine on 
RewriteRule ^.*$ index.php [L,QSA]

index.php:

$myname = $_SERVER['REQUEST_URI'];
$myname = ltrim($myname, '/'); //strip leading slash if need be.
$realpath = LookupNameToPath($myname);

include($realpath);

yeni bir dosya oluşturun ve (htaccess.) için isim ve içine (sadece örneğin) bu apache komutları koymak değiştirmek:

Options +FollowSymLinks 
RewriteEngine on
RewriteRule ^profile/([0-9]*)$ members.php?id=$1

Sen http://www.example.com/user.php?uname=myname gibi bir şey için http://www.example.com/myname gelen işaret bir yeniden yazma kuralı oluşturmanız gerekir.

In '.htaccess'

RewriteEngine on
RewriteRule     ^/(.*)$     /user.php?uname=$1
#               SourceURL   TargetURL

Sonra 'uname' GET değişkeni bir 'user.php', bu yük kullanıcı bilgilerini oluşturmak.

Senin soru görmek, zaten (yani, '893674.php') kullanıcı kimliği tabanlı kullanıcı sayfası olabilir bu yüzden oraya yönlendirme yapmak.

Yönlendirme konum çubuğundaki URL'yi değişecek gibi ama bunu önermiyoruz.

Başka bir yolu (zaten varsa, '893674.php') eklemektir.

Olsa iyi yolu, doğru o sayfada kullanıcı (veya ne olursa olsun bunu yapmak) bilgilerini göstermektir.

Örneğin:

<?phg
vat $UName = $_GET['uname'];
var $User  = new User($UName);

$User->showInfo();
?>

Bunun için apache bulunuyor mod_rewrite gerekir. yalnız php ile herhangi bir şans olmaz.

bkz: http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html