Tasarımcılar ve Geliştiriciler İçin .htaccess İçin Başlangıç Kılavuzu
Web sunucunuzu kişiselleştirmek için kullanabileceğiniz çeşitli araçlar arasında .htaccess config dosyası muazzam bir değerdir. Yapabilirsin belge türlerini, sıfırlama motorlarını, URL yönlendirmelerini hızlıca sıfırlayın, ve diğer birçok önemli özellik. Çok teknik olmayan web yöneticileri, kendi .htaccess dosyanızı yönetme özelliklerine girmeyebilir. Ancak konunun kendisi büyüleyici ve araştırmaya değer.
Bu makale için, webmasterlar ve web geliştiricileri için daha amaçlı konseptler sunmak istiyorum. Olan herkes bir Apache sunucusunda kendi web sitelerini başlatmak .htaccess dosyalarının nasıl yönetileceğini kesinlikle anlamak isteyecektir. O çok fazla özelleştirilebilirlik sağlar ve o herhangi bir web dilinde çalışabilir PHP'den Ruby'ye.
Bu yazının en altına bazı harici webapps'ler ekledim. yeni başlayanların .htaccess dosyalarını dinamik olarak oluşturmasına yardımcı olun.
Neden bir .htaccess Dosyası kullanmalı?
Bu harika bir soru ve belki de cevaplayarak başlamalıyız. “.htaccess dosyasi nedir”? Apache web sunucusu tarafından kullanılan çok özel bir konfigürasyon dosyasıdır. Bir .htaccess dosyası web sunucusuna söyleyebilir çeşitli bilgi formlarının nasıl sunulduğu ve çeşitli HTTP istek başlıklarının nasıl ele alınacağı.
Gerçekten bu bir araçtır ademi Web sunucusu ayarlarını düzenlemek için Bir fiziksel sunucu, her birinin kendi .htaccess dosyasına sahip 50 farklı web sitesini tutabilir. Web yöneticilerine çok fazla güç veriyor, bu da başka türlü imkansız olacak. Ama neden bir tane kullanmalısın?
En büyük sebep güvenlik. Yapabilirsin belirli dizinleri kilitleyin veya parola korumalı duruma getirin. Özel projeler veya biraz daha fazla güvenlik almak istediğiniz yeni İçerik Yönetim Sistemleri için bu harika. Ancak, 404 hata mesajını belirli bir web sayfasına yönlendirmek gibi yaygın görevler de vardır.. Bu sadece tek bir kod satırı alır ve ziyaretçilerin eksik sayfalara nasıl tepki vereceğini önemli ölçüde etkileyebilir.
Doğrusu, başkalarını bir .htaccess dosyasının anlaşılmaya değer olduğuna ikna etmek için söyleyebileceğim pek bir şey yok. İşlemi bir kez gördüğünüzde, bu küçük yapılandırma dosyasından gelen tüm değerleri tanıyabilirsiniz. Ayrıca, bu makalenin geri kalanının web yöneticilerini bir .htaccess yapılandırmasını yönetme ışığına sokmak için bazı içgörüsel konular sunabileceğini umuyorum.
Erişime İzin Ver / Reddet
Potansiyel spam ziyaretçilerini tanımak ve web sitenize erişimlerini engellemek mümkündür. Bu biraz aşırı olabilir, ancak bir kişinin veya bir grubun web sitenizi hedeflediğini biliyorsanız, aralarından seçim yapabileceğiniz seçenekler vardır. Bir IP adresiyle ziyaretçileri reddetmek veya yasaklamak için bir etki alanı başvurusu seçebilirsiniz.
Emir izin, inkar etmek 255.0.0.0 inkar 123.45.6 inkar. hepsinden izin ver
Bu örnek kodlar, başlamak için mükemmel bir şablon olduklarından Htaccess Kılavuzundan kopyalandı. 2. IP adresinin 4. tamsayı eksik olduğuna dikkat edin.. Bu kod bloğu ilk IP’yi (255.0.0.0) ve 123.45.6.0-255, sonra diğer tüm trafiğe izin verin. Web yöneticileri bunu diğer teknikler kadar sık kullanmayabilir, ancak bunu anlamakta fayda var.
Dizin Listesini Engelle
Açık bir dizininiz olduğu zamanlar olacaktır. varsayılan olarak göz atmaya izin verecek şekilde ayarlanmış. Bu, kullanıcıların görüntüler klasörünüz gibi dahili bir dizin yapısında listelenen tüm dosyaları görüntüleyebileceği anlamına gelir. Bazı yöneticiler, dizin listesine izin vermek istemezler ve neyse ki kod pasajını hatırlamak oldukça kolaydır..
Seçenekler -Indexes
Bu cevabı Yığın Taşması boyunca defalarca sunulduğunu gördüm ve hatırlanması en kolay .htaccess kurallarından biri olabilir..
Aslında mümkün bu dizinlerin her birinde birden fazla .htaccess dosyası oluşturun belki bunlardan biri şifre korumalıdır fakat diğerleri şifre korumalıdır. Ve hala tutabilirsin Seçenekler -Indexes böylece ziyaretçiler web sitenize / resimlerinize / klasörünüze göz atamazlar.
Şifre koruması
Dizinlerinizi şifre ile korumak çok yaygın bir işlemdir. web siteniz için çok önemli olan yönetim alanlarını ve diğer klasörleri güvenceye almak. Bazen sadece küçük bir gruba erişim sağlamak isteyebilirsiniz. Diğer zamanlarda şifreler, bilgisayar korsanlarının web sitenizin yönetim paneline erişmelerini engellemektir. Ancak, her iki durumda da, çok sayıda soruna çok güçlü bir çözümdür..
Önemli kod parçacıklarını ana hatlarıyla açıklayan şifre koruması hakkında kullanışlı bir rehber bulunmaktadır. İhtiyacın olacak kullanıcı adı / şifre bilgilerini saklayan bir şifre dosyası oluşturun. Apache, kullanıcının neye erişim izni verilip verilmeyeceğini görmek için nelerin girdiğini kontrol edebilir. Ve kullanıcı adınız ve şifreniz için nasıl bir örnek oluşturmanız gerektiğine dikkat edin.
Biraz zaman kazanabilmeniz için bu htpassword oluşturucuyu kullanmanızı tavsiye ederim.. Sözdizimi her zaman mükemmel çıkacaktır ve şifreyi kendiniz şifrelemenize gerek yoktur. Diğer bir harika seçenek ise tüm rehber listesini şifreyle korumak. Bu örneği CSS-Tricks kod pasajları galerisinde görebiliriz..
AuthType Temel AuthName "Bu Alan Parola Korumalı" AuthUserFile /full/path/to/.htpasswd Geçerli bir kullanıcı iste
WordPress Güvenliği
Bu şifre koruma fikrini iyi kullanmak için gerçek dünyadan bir örnek gösterelim. Bu daha karmaşık kod pasajı olacak WordPress wp-login.php dosyasına erişen herkes için kullanıcı kimlik doğrulamasını zorla. Orijinal kaynağı, çok sayıda başka WordPress koruma parçacığına sahip olan Ask Apache'de bulabilirsiniz..
Reddet Siparişi Ver, Reddet Tümüne İzin Ver Herhangi bir YetkiAdı "AskApache tarafından Korunuyor" Yetkilendirin Yetkilendirin /web/askapache.com/.htpasswda1 AuthType Temel Geçerli kullanıcı iste
Ve bu .htaccess kurallarını izleyecekseniz, yönetici alanını parola korumanız için de yardımcı olabilir. Genellikle wp-login.php Kütle kırmaya çalışan insanlardan en çok sonucu alan sisteminize zorla girecek. Yani sadece yukarıdaki örnek kodlar bile fazlasıyla ek güvenlik WordPress web siteniz için.
HTTP URL Yeniden Yazma Kuralları
URL'leri yeniden yazmak muhtemelen .htaccess dosyalarının en yaygın kullanılanlarından biridir. WordPress varsayılan kurulumları aslında yapabilir Yönetim panelinden bir .htaccess dosyası oluşturun. Bu, .php? P = 1 yapısına sahip olmayan güzel URL'ler oluşturmanıza olanak sağlar..
Bu yeniden yazma örneğine bakmak istiyorum çizgi alt çizgi kısa çizgi nasıl güncellenir ondan bu yana en önemli unsurların çoğunu içerir.
Seçenekler + FollowSymLinks RewriteBase Üzerinde / RewriteRule! \. (Html | php) $ - [S = 4] RewriteRule ^ ([^ _] *) _ ([^ _] *) _ ([^ _] *) _ ( [^ _] *) _ (. *) $ $ 1- $ 2- $ 3- $ 4- $ 5 [E = uscor: Evet] RewriteRule ^ ([^ _] *) _ ([^ _] *) _ ([^ _ ] *) _ (. *) $ 1- $ 2- $ 3- $ 4 [E = uscor: Evet] RewriteRule ^ ([^ _] *) _ ([^ _] *) _ (. *) $ 1- $ 2- $ 3 [E = uscor: Evet] RewriteRule ^ ([^ _] *) _ (. *) $ 1- $ 2 [E = uscor: Evet] RewriteCond% ENV: uscor ^ Evet $ RewriteRule (. *) Http: //d.com/$1 [R = 301, L]
YenidenYazmaMotoru ve RewriteBase çoğu zaman bu kesin değerlere ayarlanabilir. Fakat başka bir şeyin çalışması için RewriteEngine'ın açık olmasına ihtiyacınız var. Mod_rewrite'ın nasıl etkinleştirileceğini açıklayan çevrimiçi birçok rehber var ve barındırma sağlayıcınız da yardımcı olabilir.
Sözdiziminin bir deseni izlediğine dikkat edin RewriteRules zirvede. Bu kurallar HTTP isteği olarak gönderilen davalarla eşleş. Bunlar, bu durumda her şeyi etki alanına yönlendiren bir RewriteRule tarafından yanıtlanır. d.com. [R = 301, L] gibi biten ayraçlar, önemli olan, ancak daha ileri bir konu olan yeniden yazma bayrakları olarak adlandırılır..
Mod_rewrite sözdizimi kesinlikle biraz kafa karıştırıcıdır ancak korkutmayın! Metin parçacıkları diğer örneklerde daha kolay görünebilir.
Yeni başladığınızda, gerçek URL’leri kullanarak kod örnekleri oluşturmanıza yardımcı olan bu mod_rewrite webapp’ı önermek zorundayım. Bu harika bir araçtır çünkü Rewrite kurallarında gerçekte ne yaptıklarını görmek için sözdizimindeki çeşitli öğeleri arayabilirsiniz. İşte incelemek için basit bir örnek ile başka bir büyük öğretici:
RewriteRule ^ dir / ([0-9] +) /? $ /İndex.php?id=$1 [L]
Bunların hepsini bir kerede aşırı yüklemeye çalışmayın. URL'leri [0-9a-zA-Z] + ve benzer desenlerle nasıl yeniden yazacağımı gerçekten anlamam 3-4 aydan fazla sürdü. Pratik yapmaya devam edin ve zamanla size sağduyulu bilgi gibi bu şeyleri alacağınıza söz veriyorum.
Web Yöneticileri için Kod Parçacıkları
Kullanımı kolay snippet'leri seviyorum ve webmasterlar için bu küçük .htaccess kodları koleksiyonunu bir araya getirmek istiyorum. Bu fikirlerin her biri, diğer kod bloklarıyla birlikte kendi .htaccess dosyanıza güzel bir şekilde uyuyor. Bu snippet'lerin çoğu web sunucusu ortamınızdaki hızlı sorunları veya düzeltmeleri çözme. Yeni başlamış web yöneticileri için yeni başlayanlar için mükemmel Apache kurulumunu hayal edin.
DirectoryIndex Ayarı
DirectoryIndex komutu genellikle tek bir satırda kullanılır. Apache’ye hangi belgelerin başlangıçta “ana” belgesi. Varsayılan olarak bu olacaktır index.html, index.php, index.asp ve diğer dizin dosyaları gibi hedef öğeleri. Ancak, aşağıda kopyaladığım bu kod parçacığını kullanarak, bu kök belgeyi istediğiniz herhangi bir şeyi yapma olanağınız vardır.
DirectoryIndex index.html index.cgi index.php
Belgelerin sırası en önemlisi ile başlamalı ve en az önem derecesine doğru ilerlemelidir. Eğer bir HTML veya CGI dosyanız yoksa, geri dönüş yapılacaktır. index.php. Ve bu dosyaları bile adlandırabilirsin. home.php veya someotherfile.php ve hepsi geçerli sözdizimi.
WWW veya WWW Olmayan Alt Etki Alanını Zorla
Belirtmezseniz Google, web sitenizin etki alanının her iki sürümüyle de çalışabilir www.domain.com ya da sadece domain.com. Tecrübelerime göre en iyi yöntem bunlardan birini seçin ve tek seçenek olarak ayarlayın .htaccess yoluyla. Sonra Google, bazıları WWW alt etki alanını işaret ederken, bazı URL’leri endekslemeyecek.
# WWW Alt etki alanını yeniden zorla RewriteCond% Üzerinde% HTTP_HOST ^ domain.com [NC] RewriteRule ^ (. *) $ Http://www.domain.com/$1 [L, R = 301] # Alt etki alanı yok HTTP_HOST! ^ Domain.com $ [NC] Yeniden Yazma ^ (. *) $ Http://etkialani.com/$1 [L, R = 301]
Bu kod pasajı bir CSS-Tricks arşivinden gelir ve çok kullanışlı bir çözüm sunar. Kendi web siteniz için neye ihtiyacınız varsa, etki alanını güncellemelisiniz. Aksi takdirde problemler olacak ve hemen farkedeceksiniz! Ancak bu iki seçenekten birini zorladığım için çok destek veriyorum ve yeni bir web sitesi başlattıktan sonra görevlerimin başında geliyor.
Medya Dosyası Yüklemelerini Zorla
Oldukça önemli olan bir diğer snippet, belirli medya türlerini zorlamak için izin veriyor tarayıcıda görüntülenmek yerine indir. Hemen, indirilebilir bir biçimde sunulabilecek PDF belgelerini ve MP3 ses dosyalarını düşünebilirim; indirilebilir olduklarından emin olun? Htaccess Kılavuzunda yayınlanan ve bu kod pasajını özetleyen benzer bir makale buldum..
AddType uygulama / octet-stream .zip .mp3 .mp4
Bu satırın sonuna daha fazla dosya türü eklemek için çekinmeyin. Octet-stream MIME türünü kullanan tüm medya formatları indirilebilir olacaktır. Bunu .htaccess aracılığıyla zorlamak, kişilerin bu dosyaları tarayıcıda görememelerini sağlamak için çok doğrudan bir yoldur..
Özel Hata Belgeleri
Eklemek istediğim son son eser, özel hata belgelerinin tam bir şablonu. Genellikle bu sayı kodları sadece sunucu tarafında görülür. Ancak aşina olmanız gereken birçok hata belgesi var. Birkaç örnek olabilir 403/404 hataları ve 301 yönlendirmesi.
Bu hata kodu şablonu 100'de başlar ve yukarı doğru 500 hataya gider. Lütfen bunlara kesinlikle ihtiyacınız olmadığını unutmayın. Yalnızca en yaygın hatalar gerekli olabilir ve ihtiyaç duyulduysa muhtemelen birkaç gizli snippet olabilir.
Bir kodu tanımıyorsanız, daha iyi bir anlayışa sahip olmak için Wikipedia’ya bakın..
ErrorDocument 100 / 100_CONTINUE ErrorDocument 101 / 101_SWITCHING_PROTOCOLS ErrorDocument 102 / 102_PROCESSING ErrorDocument 200 / 200_OK ErrorDocument 201 / 201_CREATED ErrorDocument 202 / 202_ACCEPTED ErrorDocument 203 / 203_NON_AUTHORITATIVE ErrorDocument 204 / 204_NO_CONTENT ErrorDocument 205 / 205_RESET_CONTENT ErrorDocument 206 / 206_PARTIAL_CONTENT ErrorDocument 207 / 207_MULTI_STATUS ErrorDocument 300 / 300_MULTIPLE_CHOICES ErrorDocument 301 / 301_MOVED_PERMANENTLY ErrorDocument 302 / 302_MOVED_TEMPORARILY ErrorDocument 303 / 303_SEE_OTHER ErrorDocument 304 / 304_NOT_MODIFIED ErrorDocument 305 / 305_USE_PROXY ErrorDocument 307 / 307_TEMPORARY_REDIRECT ErrorDocument 400 / 400_BAD_REQUEST ErrorDocument 401 / 401_UNAUTHORIZED ErrorDocument 402 / 402_PAYMENT_REQUIRED ErrorDocument 403 / 403_FORBIDDEN ErrorDocument 404 / 404_NOT_FOUND ErrorDocument 405 / 405_METHOD_NOT_ALLOWED ErrorDocument 406 / 406_NOT_ACCEPTABLE ErrorDocument 407 / 407_PROXY_AUTHENTICATION_REQUIRED ErrorDocument 408 / 408_REQUEST_TIME_OUT ErrorDocument 409 / 409_CONFLICT ErrorDocument 410 / 410_gone ErrorDocument 411 / 411_LENGTH_REQUIRED ErrorDocument 412 / 412_PRECONDITION_FAILED ErrorDocument 413 / 413_REQUEST_ENTITY_TOO_LARGE ErrorDocument 414 / 414_REQUEST_URI_TOO_LARGE ErrorDocument 415 / 415_UNSUPPORTED_MEDIA_TYPE ErrorDocument 416 / 416_RANGE_NOT_SATISFIABLE ErrorDocument 417 / 417_EXPECTATION_FAILED ErrorDocument 422 / 422_UNPROCESSABLE_ENTITY ErrorDocument 423 / 423_LOCKED ErrorDocument 424 / 424_FAILED_DEPENDENCY ErrorDocument 426 / 426_UPGRADE_REQUIRED ErrorDocument 500 / 500_INTERNAL_SERVER_ERROR ErrorDocument 501 / 501_NOT_IMPLEMENTED ErrorDocument 502 / 502_BAD_GATEWAY ErrorDocument 503 / 503_SERVICE_UNAVAILABLE ErrorDocument 504 / 504_GATEWAY_TIME_OUT ErrorDocument 505 / 505_VERSION_NOT_SUPPORTED ErrorDocument 506 / 506_VARIANT_ALSO_VARIES ErrorDocument 507 / 507_INSUFFICIENT_STORAGE ErrorDocument 510 / 510_NOT_EXTENDED
Çevrimiçi .htaccess Webapps
- Htaccess Oluşturucu
- .htaccess yönlendirme jeneratörü
- .htaccessEditor - Bir .htaccess dosyası oluşturun
- GenerateIt.net tarafından Mod Rewrite Generator
Diğer Faydalı Kaynaklar
- .Htaccess içinde Htaccess
- Resmi Apache htaccess Belgeleri
- Apache Blog'a sor - Htaccess Arşivleri
- Htaccess ve mod_rewrite için en iyi rehber
- Mod_Rewrite Kuralları Hakkında Bilmek İstediğiniz Her Şey, Sormaktan Korktular
Son düşünceler
.Htaccess dosyalarını tartışan çok sayıda çevrimiçi kaynak var. Bağlantılı makalelerim ve webapps'larım başlamak için harika bir yer. Ancak yeni fikirler uygulamaya devam edin ve bundan korkmayın kod parçacıklarını test etme. Olduğu sürece yedek bir dosyanız var o zaman istediğiniz bir şeyi test edebilirsiniz ve bu eğlenceli bir öğrenme deneyimidir..
.Htaccess yönetimi hakkında başka fikir veya önerileriniz varsa lütfen aşağıdaki tartışma alanını bizimle paylaşın.