2008-08-16 6 views
5

Bazı wordpress kurulumlarında olduğu gibi, kimliğine sahip olmayan (yeniden yazılmış) URL'ler görüyorum. Bunu başarmanın en iyi yolu nedir? Örnek: site.com/product/some-product-name/ Her sayfa isteğinde DB sorgusundan kaçınmak için sayfa dizileri ve kimlikler dizisini önbellekte saklayabiliriz. Çatışmalar nasıl önlenir ve URL'lerin kimlikleri olmadan kullanılmasıyla ilgili diğer sorunlar nelerdir?URL'siz ID

cevap

3

Bir kimliğin kullanılması aynı bilmeceyi sunar, gerçekten - yalnızca veritabanınızda farklı bir değer olup olmadığını kontrol edersiniz. Yukarıdaki URL’nizin "bazı ürün adı" bölümü de benzersiz bir şeydir. Bazı insanlar onlara sümüklü böcek diyorlar (Wordpress, ayrıca permalinkler). Bu nedenle, belirli bir kimliğe sahip bir satır için veritabanını sorgulamak yerine, belirli bir sümüklüne sahip bir satır için veritabanını sorgulamanız gerekir. Kaydı almak için kimliği bilmeniz gerekmez.

1

Ürün adları benzersiz olduğu sürece sorun olmamalıdır. Sütun dizine eklendiği sürece, bir ürünü sayısal kimliğe göre benzersiz adla aramak için artık (en azından önemli değil) kalmaz.

+0

Çok daha uzun sürecek, ama hala umursamayacak kadar hızlı. –

1

WordPress, sümük için wp_posts tablosunda bir alana sahiptir. Gönderiyi oluşturduğunuzda, yazı başlığından bir sümük oluşturur (eğer yapılandırdığınız buysa), boşlukları boşluklarla değiştirerek (veya bunu alt çizgilere ayarlayabilirsiniz). Ayrıca, kesme, virgül veya neyi değil. Ayrıca, sümükün toplam uzunluğunu da kısıtladığına inanıyorum.

Kısacası, kısaca, URL’nin yayının başlığına dinamik olarak kod çözmesi değil. Tabloda doğrudan posta adının URL sürümüyle eşleşen bir alan var.

1

Sizin de bildiğiniz veya bilmediğiniz gibi, URL'ler Apache'nin mod_rewrite modülüyle yeniden yazılmaktadır. Burada belirtildiği gibi, Wordpress arka planda, başlığı veya posta ismini dezenfekte ettikten sonra bir sümük atmaktır.

Ancak, sorunuzu yanıtlamak için, tanımladığınız şey Wordpress'in "Pretty Permalinks" özelliğidir ve Wordpress codex numaralı telefondan daha fazla bilgi edinebilirsiniz. Wordpress'in daha yeni sürümleri dahili olarak yeniden yazma işlemini yapar (no .htaccess editin, wp_rewrite). Bu nedenle, herhangi bir permalink yapısı için aynı kuralları göreceksiniz.

Yine de, biraz kazma yaparsanız eski yeniden yazma kurallarını bulabilirsiniz. Örneğin:

RewriteRule ^([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/?$ /index.php?year=$1&monthnum=$2&day=$3 [QSA,L] 

/2008/01/01/ gibi bir URL alacak ve /index.php?year=2008&monthnum=01&day=01 yönlendirmek (ve bir tarih kategorisini yüklemek).

Wordpress zaten Yayın başlığını ayıklanmış ve veritabanındaki bir alan olarak depoladı çünkü Ama belirtildiği gibi product-name gibi bir sayfa sadece var

.