Ben miyim Bu gibi benim URL'leri yeniden yazmak ve bu iyi bir fikir mi?

3 Cevap php

Yeniden yazma bundan (Apache Mod-Rewrite) bir URL mümkündür:

http://www.example.com/view.php?t=h5k6 to this http://www.example.com/h5k6

Bu yeniden yazma nedeni URL (biraz küçük bir URL hizmeti gibi) çok kısa olması gerekiyor.

Yeni URL hala benim view.php sayfa isabet misiniz? O ($_GET) değişkeni erişmek için hala süper global dizi GET yararlanmak mümkün olacaktır t? Hala benim index.php sayfası bu http://www.example.com eşleştirmek istiyorum.

Ben de bir çaylak biraz olduğum gibi bu olabilir etkileri hakkında yorumlarınızı takdir ediyorum. :)

Tüm teşekkürler

3 Cevap

mod-rewrite terminolojisi başka bir şekilde çalışır. İstekler bu http://www.example.com/h5k6 gibi gelirdi ve http://www.example.com/view.php?t=h5k6 içten için yeniden olacaktır. Onlar GET parametreleri olarak gönderilmiş gibi bu şekilde PHP betikleri isteklerine yanıt verebilir, ancak kullanıcılar bir çok dostça bir şekilde URL'leri görebilirsiniz.

Yani herhangi bir PHP komut değiştirmek zorunda değilsiniz, ve hala GET diziden parametre t erişebilirsiniz.

Senin durumunda, kural bu gibi görünecektir:

RewriteRule ^/(.*) /view.php?t=$1

(Yerine sadece catch-all .* ifade) kabul ne daha spesifik olmak isteyebilirsiniz. Eğer view.php dışında bu dizinde diğer sayfaları varsa da, bu kurala istisnalar isteyebilirsiniz.

Bunlardan birini deneyin:

# /view.php?t=h5k6 externally to /h5k6
RewriteCond %{THE_REQUEST} ^GET\ /view\.php
RewriteCond %{QUERY_STRING} ^([^&]*&)*t=([^&]+)&?.*$
RewriteRule ^/view\.php$ /%2 [L,R=301]

# /h5k6 internally to /view.php?t=h5k6
RewriteRule ^/([0-9a-z]+)$ view.php?t=$1 [L]

Evet, bu kesinlikle mümkün ve açıklamak tam olarak etkisi olacaktır. Ancak, terminoloji geriye doğru. "Kısa" URL tarayıcı Orjinal sunucuya gönderir biridir, ve sonra aslında işlenmiş ve bir PHP isteği sonucu olan uzun versiyonu için yeniden yazılıyor.

Hemen hemen sadece yakalamak dikkatsizce kullanılırsa, bu URL'leri hem de indeksleme ve onları sıralama için kötü olan, yinelenen içerik dikkate alınarak arama motorlarında neden olabilir olmasıdır. Bir yandan, bu (ve) (yani tüm site iç bağlantıları "kısa" formatı var) her yerde "uzun" versiyonunu yayınlayarak asla önlenebilir. (Kolayca olabilir ki) yanlışlıkla bunları yayınlamak olabilir çünkü Ancak, aynı zamanda link rel="canonical", arama motorlarına sayfalarınızı altında dizine istediğiniz URL'yi anlatmak için kullanmalıdır.