Çoğu zaman URL uzantılarının gizlendiğini (ör .html
. .php
) Görüyorum , ancak tüm web siteleri bunu yapmıyor.
Web yöneticileri uzantıyı neden gizliyor? Güvenlik, URL'nin daha temiz görünmesi veya başka bir amaç için mi?
Çoğu zaman URL uzantılarının gizlendiğini (ör .html
. .php
) Görüyorum , ancak tüm web siteleri bunu yapmıyor.
Web yöneticileri uzantıyı neden gizliyor? Güvenlik, URL'nin daha temiz görünmesi veya başka bir amaç için mi?
Yanıtlar:
URL'lerden uzantıları kaldırmanın birkaç nedeni vardır:
Birçok site URL şuna benzer kılacak bir içerik yönetim sistemi (CMS) tarafından oluşturulan unutmayın: /index.php?page=this-is-the-widget-page
. Bu özellikle çirkin ve sadece bir uzantıdan çok daha kaba. Kaldırmak için yeniden yazmak index.php?page=
çok daha iyi olur.
Sunucular belge türünü başlık olarak gönderdiğinden, web'de uzantılara gerek yoktur. Web sayfaları text/html
, görüntü olarak image/png
veya olarak sunulur image/jpeg
. Bu, tarayıcıların, URL'nin metin, HTML, PDF veya resim içerdiğini anlamak için bir uzantı kullanmadan içeriği nasıl oluşturacağını bilmelerini sağlar (daha fazla bilgi için Internet medya türü Wikipedia makalesine bakın ).
Bazı web yöneticileri URL'lerinde bu içerik türüyle eşleşen bir uzantı kullanmayı tercih eder. Yani herhangi bir text/html
belgenin bir .html
uzantısı ve herhangi bir image/png
belgenin bir .png
uzantısı olacaktır. URL'ler, içerik türleriyle ilgili meta verilerin kaybolduğu dosya sistemine kaydedildiğinde yardımcı olabilir. Çoğu dosya sisteminde, dosyayı açan program uzantı tarafından seçilir. Bu nedenle, bir sayfa PHP tarafından sunulsa bile, bazı web yöneticileri .php
uzantıyı kaldırır ve bazıları bunu onunla değiştirir .html
.
Ayrıca, Yığın Taşması konusunda çok fazla tartışması olan uzantıları olmadığında URL'lerin sondaki eğik çizgi ( /
) ile daha iyi bitip bitmeyeceği sorusu da vardır .
Tüm web sunucularında bir veya daha fazla "varsayılan dosya" bulunur. Bir ziyaretçi eğik çizgi ile biten bir URL'ye /
, yani bir klasöre gittiğinde görüntülenecek dosyadır .
Web sunucusu üzerinde varsayılan dosya adı ise index.php
ve bir ziyaretçinin gider www.example.com/pagename/
, onlar vardır aslında erişen www.example.com/pagename/index.php
.
Hiçbir iz yoksa, /
web sunucusu URL'yi kaldırmak için büyük olasılıkla URL'yi yeniden yazıyor olabilir, çünkü gerekli değildir. Aslında bu site bunu yapıyor.
Bu, kendi kişisel web sitemde hedeflediğim "havalı" URI şeması türüdür.
Şahsen, bunu yapmaya başlamamın nedeni (ve muhtemelen çok daha fazla web tasarımcısı / geliştiricisi!) “Cool URI'lar değişmiyor” makalesini okuduktan sonraydı - bu belge World Wide Web'in kurucu babası Tim Berners tarafından yazılmıştır. -Lee.
Tim Berners-Lee'nin ünlü makalesinde, Stephen Ostermiller'in bu soruya mükemmel cevabında sahip olduğu aynı nedenleri belirtiyor .
Ana sorunuza, "Neden uzantılar URL'lerde gizlidir?" Sorusuna daha spesifik bir cevap vermek için, benim için temel nedenlerin:
1. URI'yi geleceğe hazırlamak için:
Örneğin, şu anda bir URI kullanmak için iyi bir fikir gibi gelebilir:
http://www.example.com/page.pl
burada .pl
bir Perl betiği için dosya exetension olmak. Ancak, bugünlerde, çoğu web geliştiricisi arka plan komut dosyası oluşturmak için ASP.NET veya PHP kullanıyor, bu yüzden bugün olsa da ,
http://www.example.com/page.php
daha iyi bir fikir gibi geliyor, sonunda PHP ve ASP / ASP.net eski moda olacak. Bu yüzden daha iyi bir fikir, uzantıyı tamamen kaldırmaktır.
2. Okunabilirlik ve Hatırlanabilirlik:
“Serin” bir URI'nin insanlara sözlü olarak, kağıt üzerinde (örneğin reklamlar, kartvizitler vb.) Hatırlanması daha kolay geçmemek çok daha kolaydır.
3. “Korsanlık” *
Bu günlerde kullanıcıların büyük çoğunluğunun muhtemelen her şey için bir arama motorundan geçtiğini söylesem de - adres çubuğuna gidip yazacak insanları gördüm www.google.com
ve sonra Google'ı tam anlamıyla yazmak için kullandım www.ebay.com
! Ancak, multimedya tabanlı bir web sitem varsa, URI http://www.example.com/video
, müzik bölümünün URI altında bulunabileceğini ima ediyor http://www.example.com/audio
. (Hala adres çubuğunu web sitelerine gitmek için kullanıyorum - bu tür şeyler hakkında oldukça "eski okul" dur!)
* (! Ah “Hackability” - O kelimeyi yapar hatta ?! var Kuyusu, bu mu şimdi !) :-)
4. ** Estetik: Onları daha güzel göstermek için! (OKB'yi suçla!)
Bununla birlikte, web yöneticilerinin birçoğunun aslında dinamik URI'lere bir dosya uzantısı eklediğini çeşitli SEO ile ilgili web sitelerini okuyarak fark ettim:
Gerçek URI şunlar olabilir:
http://www.example.com/article
Bununla birlikte, web yöneticisi URI'yi "bakmak" için aşağıdaki gibi bir yeniden yazma işlemi gerçekleştirir:
http://www.example.com/article.html
Bunun arkasındaki mantık, temel olarak, bir arama motorunun statik sayfalara daha yüksek bir sıralama atayacağıdır (görünüşe göre, değişme olasılığı daha düşüktür). (Tam olarak SEO konusunda uzman olmasam da, şahsen bu fikri kendim satın almıyorum - Google ve Bing'in algoritmalarının arkasındaki akıllarla, sahte bir dosya uzantısından biraz daha fazlasını alacağını tahmin ediyorum. yolunuzu SERP kutup pozisyonuna getirin!)
URI'leri adlandırma hakkında daha fazla bilgi için şu makaleleri okumanızı öneririz:
Tim Berners-Lee:
W3C KG İpuçları:
Brian Kelly (İngiltere Web Odağı / UKOLN - Bath Üniversitesi):
Bu yardımcı olur umarım!
Yukarıda verilen tüm cevapları tamamen kabul ediyorum. Uzantıların URL'de gizlenmesinin nedenlerinden birinin güvenlik olduğunu eklemeniz yeterlidir. Basitçe ifade etmek gerekirse, URL'deki uzantıyı göstermezseniz, uygulamanın oluşturulduğu teknolojiyi bulmak biraz zordur. Diyelim ki PHP'de yapılmış bir sayfa ve uzantı gizli değil, o zaman bir hacker potansiyel olarak PHP'nin güvenlik açıklarını belirleyebilir ve bazı kötü amaçlı etkinlikleri yürütmek için kullanabilir.
Sayfa uzantılarınızı gizlerseniz veya gizlemezseniz, kullanıcılar hangi teknolojiyi kullandığınızı hâlâ bilebilir. CURL kullanarak, başlık bilgisini alarak teknolojinizi elde etmek imkansız değildir.
curl -I -L rembatvideo.ga
Ardından, teknolojiniz, önbellek isteğiniz, bağlantınız ve daha fazlası gibi bir şey görürsünüz.
Tamamen "Stephen Ostermiller" tarafından açıklandığı gibi katılıyorum ama URL uzantısını gizlemek için bunun arkasında hile bahsetmek istiyorum. Ve bunun için .htaccess yeniden yazma kuralını kullanmanız gerekiyor, size yardımcı olan komut dosyası:
Harici .php
istekleri uzantısız URL'ye yönlendirin
RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/
RewriteRule ^(.+)\.php$ http://example.com/folder/$1 [R=301,L]