SORU
13 Aralık 2013, Cuma


Referans: büyü, URL yeniden yazma ve "güzel bağlantılar" açıkladı

"Pretty link" sık sık talep edilen bir konudur, ancak nadiren tam olarak açıklanmıştır. büyü "pretty Link" ve belgelerine HTTP yeterlilik belirli bir düzeyde varsayar grok için, ama karmaşık ve kendi sözdizimi çok veciz, çok zor. yapmak için bir yoldur Birisi "güzel bağlantılar" ve nasıl büyü oluşturmak için kullanılabilir mi? nasıl çalıştığını basitçe izah edebilir

Diğer ortak adları, temiz URL için terimleri diğer adları: Dinlendirici bir URL, Kullanıcı dostu URL, SEO dostu URL, Tembellik, MVC URL (muhtemelen bir yanlış isim)

CEVAP
13 Aralık 2013, Cuma


Büyü önce sen ne yaptığını anlamak için bir web sunucusu nasıl çalıştığını anlamak gerekir. Bir web sunucusu HTTP requests yanıt verir. En temel düzeyde bir HTTP isteği şu şekilde görünür:

GET /foo/bar.html HTTP/1.1

Bu bir web sunucu isteyen bir tarayıcı basit bir istekURLO /foo/bar.html. Önemli bir istek olmadığını vurgulamak önemlidirdosya, istekleri sadece bazı rastgele URL. İsteği de bu gibi görünebilir:

GET /foo/bar?baz=42 HTTP/1.1

Bu isteği bir URL için de geçerlidir, ve belli ki artık dosyaları ile alakası yok.

Web server port üzerinde bir uygulama dinleme, HTTP istekleri port üzerinde gelen ve karşılık iade kabul ediyor. Web sunucusu yanıt vermek için yapılandırılmış herhangi bir şekilde uyum/gördüğü herhangi bir şekilde herhangi bir isteğine yanıt vermek tamamen ücretsiz. Bu yanıt dosyası değil, birYanıt HTTPolabilir veya disk üzerinde fiziksel dosyalar ile ilgili bir şey olabilir. Bir web sunucusu ısrarla çalışan tüm programlar Apache, diğer birçok web sunucusu olmak zorunda değil ve HTTP isteklerine yanıt veren bir bağlantı noktasına bağlı. Kendiniz yazabilirsiniz. Bu paragraf çok önemli olan doğrudan eşit dosya, URL herhangi bir fikri sizi boşanma anlamak için tasarlanmıştır. :)

Çoğu web sunucuları varsayılan yapılandırma sabit diskte URL ile eşleşen bir dosya arayın. Eğerbelge köksunucu için ayarlanır ki: /var/www, /var/www/foo/bar.html mevcut dosya olup olmadığını bakmak ve bu hizmet verebilir. Eğer dosya sonu ise "."PHP yorumlayıcı ve . çağırmak olacaktır php ^em>sonrasonuç döndürür. Tüm bu dernek tamamen yapılandırılabilir; bir dosya sonu yok "."PHP tercüman aracılığıyla çalıştırmak için web sunucusu için URL bir şey için disk gerçekleşmesi için belirli bir dosyaya maç yok. php

büyü için bir yolduryeniden yazmakiç talep işleme. Web sunucu URL için bir istek aldığında /foo/baryeniden yazmakbu başka bir web sunucusu disk üzerinde bir dosya için bu maç için arayacaktır önce bir şeye URL. Basit bir örnek:

RewriteEngine On
RewriteRule   /foo/bar /foo/baz

Bu kural diyorbir istek eşleştiğinde "", yeniden "". /foo/baz/foo/barİsteği ise /foo/baz yerine talep olsaydı olarak ele alınacaktır. Bu, örneğin: çeşitli efektler için kullanılabilir

RewriteRule (.*) $1.html

Bu kural bir şey (.*) ile eşleşiryakalar((..)), sonra da eklemek için yeniden yazar ".". html Eğer /foo/bar istenen URL olsaydı başka bir deyişle, Eğer /foo/bar.html talep olsaydı olarak ele alınacaktır. Düzenli ifade ile eşleşen, yakalama ve değiştirme hakkında daha fazla bilgi için http://regular-expressions.info bkz.

Sık karşılaşılan bir başka kural şudur:

RewriteRule (.*) index.php?url=$1

Bu, yine, bir eşleşme var ve başlangıçta istenen URL'YE url sorgu parametresi eklenmiş dosya index.php yeniden yazar. I. e., tüm istekleri geldiğiniz için, dosya index.php yürütülür ve bu dosya ile istediği her şeyi yapabilir, bu yüzden $_GET['url'], özgün istek erişebilir.

Ne büyü yapardeğilyapın

büyü sihirli bir şekilde tüm URL yapmaz "". güzel Bu yaygın bir yanlış anlama. Web sitenizde bu link varsa:

<a href="/my/ugly/link.php?is=not&very=pretty">

büyü güzel yapmak için yapabileceği bir şey yok. Bu güzel bir bağlantı yapabilmek için:

  1. Güzel bir bağlantıyı değiştir:

    <a href="/my/pretty/link">
    
  2. Sunucuda kök URL /my/pretty/link yukarıda açıklanan yöntemlerden herhangi birini kullanarak isteği işlemek için kullanın.

  3. Bir birlikte mod_substitute giden HTML sayfalarını ve içerdiği bağlantıları dönüştürmek için kullanmak olabilir. Bu genellikle sadece HTML kaynakları güncelleme daha yorucu olsa da.

Orada bir sürü büyü yapabilir ve çok karmaşık eşleştirme kuralları oluşturabilirsiniz, dahil olmak üzere zincirleme birçok yazar, proxy istekleri için tamamen farklı bir hizmeti ya da makine, dönen belirli bir HTTP durum kodları gibi tepkiler, yönlendirme istekleri vb. Çok güçlü ve eğer temel HTTP istek-yanıt mekanizması anlamak iyi olabilir. Yokdeğilotomatik olarak bağlantılar güzel.

Olası tüm bayraklar ve seçenekler için official documentation bkz.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Mark Halberstadt

    Mark Halbers

    19 ŞUBAT 2010
  • Sam Kear

    Sam Kear

    14 Temmuz 2007
  • sWooZie

    sWooZie

    9 ŞUBAT 2006