2012-07-03 18 views
5

Ben bir php geliştiriciyim ve şu anda bir CMS/blog sistemi geliştiriyorum. WordPress gibi bir permalink sistemi eklemek istiyorum. ben WordPress parse permalink nasıl merak ediyorum. Örneğin, nasıl elde id ve post name gibi verileri almak için: KısacasıWordPress permalink sistemi nasıl çalışır?

example.com/id/123/post/example/ 

, bir sistem url id ve post name almak istiyorum. Ben WordPress gibi etiketleri kullanarak gibi permalink yapısını değiştirmeye olanak sağlamak istiyorum:

id/%postid%/post/%postname%/ 

nasıl $id ve $post_name gibi değişkenler veri almak nerde değerleri 123 ve example olacak? Lütfen bana yardım et. Şimdiden teşekkürler.

cevap

0

Bu, kullandığınız sunucu yazılımının türüne bağlıdır, ancak komut dosyalarınızı Apache'de kullanma planlamanız genellikle mod_rewrite ve özellikle .htaccess adlı bir dosyayı kullanır.

Bu konuyla ilgili bir öğretici okuyarak başlamanızı öneririm. As usual, Google is your friend.

5

mod_rewrite genel olarak kullanılabilen apache modülü, bu konuda size yardımcı olabilir. Yaptığınız şey bir .htaccess dosyası içinde yeniden yazma kuralları yazmaktır ve yeniden yazma yoluyla, normalde bir dosya sistemine benzeyen süslü yapılar $ _GET parametreleri olarak bir PHP dosyasına gönderilir. Örneğin

, gibi bir şey değiştirmek istiyorsa: yerine index.php içinde yukarı çekerseniz, Şimdi

RewriteEngine on 
RewriteRule reactor/([0-9]+)/$ index.php?id=$1 

: /reactor/13/

yazma içine .htaccess dosyasında bu yeniden yazma kuralı ?reactor=13/reaktör/13 /, index.php dosyası $ _GET bu görmelisiniz:

Array 
(
    [id] => 13 
) 

Şimdi, HTML kodu için, bu URL'ler bir zanaat size kalmış düşüncenize uyun.

Bu yeniden yazma kuralları kafa karıştırıcı olabilir, ancak mantıksal bir regex deseni izlerler.

WordPress, bu düzenleme .htaccess dosyalarını, her şeyi WP'ye gönderdikleri yere eklemekten daha güçlü bir yaklaşım alır ve daha sonra WP, iç kurallar aracılığıyla kalanını çözer/yönlendirir.

+0

WP kaynağında bağlantılar işleniyor mu? Eminim haklısınız (yaratılan mod_rewrite kuralları çok basit/geneldir), ancak bunun olması gereken yeri görebilseydim, sahip olduğum garip bir sorunu teşhis etmeme yardımcı olur. – iX3

+1

WP aslında tek bir yere işaret etmek için çok kıvrık veya soyutlanmıştır. Bunu https://github.com/WordPress/WordPress/search?q=permalink_structure&source=cc adresinden görebilirsiniz. – pp19dd