5 soluții Htaccess practice și practice

Astăzi vom trece peste câteva utilizări practice ale fișierelor htaccess pe care le puteți utiliza în aplicațiile dvs. web.

cerinţe

Fișierele Htaccess sunt fișiere de configurare de text simplu folosite de serverul web HTTP Apache. Ele permit utilizatorilor să stabilească opțiuni la nivel de director fără a fi nevoie de acces la httpd.conf fişier. Ca atare, este necesar ca serverul să utilizeze Apache și o gazdă web care permite htaccess (cele mai populare gazde fac).

Îmi presupun o cunoaștere de bază a htaccess, dar dacă trebuie să vă împrospătați, verificați acest articol de Joseph Pecoraro

1. Împiedicați conectarea rapidă

Hotlinking sau linking inline este atunci când un site web se leagă direct de un obiect de pe un alt site. Acest lucru costă lățimea de bandă a site-ului pentru a oferi imaginea pe pagina celui de-al doilea site. Pe site-urile populare de fotografie aceasta poate fi o problemă majoră, deși uneori umoră.



http://www.shapelessmass.com

Există modalități de a rezolva această problemă în creștere utilizând htaccess. Mai întâi aici este imaginea pe care încercăm să o protejăm.

 RewriteEngine pe RewriteCond% HTTP_REFERER! ^ $ #Domeni care pot conecta la imagini #add cât doriți RewriteCond% HTTP_REFERER! ^ Http (s)?: // (www \.)? Demo.collegeaintcheap.com [NC] # RewriteCond% HTTP_REFERER! ^ Http (s) ?: // (www \.)? Noahhendrix.com [NC] # nu are nicio imagine atunci când este fierbinte RewriteRule \ (jpg | png | gif) NC, F, L]

Vom trece prin această linie-linie.

  1. Mai întâi trebuie să pornim motorul de rescriere în Apache, ceea ce ne permite să redirecționăm solicitarea utilizatorului.
  2. Apoi începem să stabilim condițiile folosind RewriteCond. Aceasta este o funcție care are două argumente: TestString și CondPattern. TestString este șirul pe care dorim să-l verificăm pe CondPattern contra (folosind expresii regulate). $ HTTP_REFERER este o variabilă furnizată de Apache care deține domeniul de la care a venit cererea, în acest caz dorim să permită solicitările de la referenți HTTP goi pentru a proteja utilizatorii care se află pe un server proxy care trimite referințe necompletate.
  3. Apoi, setăm domeniile de la care vom permite ca imaginile noastre să fie conectate utilizând aceeași sintaxă, cu excepția faptului că acum oferim o adresă URL. [NC] steagul la sfârșitul comenzii instruiește pur și simplu motorul să ignore carcasa. Puteți adăuga cât mai multe domenii de linii pe care le doriți aici, utilizând aceeași sintaxă. De dragul exemplului am adăugat domeniul meu personal, dar l-am comentat.
  4. În cele din urmă, ultima linie este RewriteRule pe care dorim să o folosim dacă oricare dintre condițiile de mai sus nu este îndeplinită. Durează și două argumente Model și Substituţie, unde modelul este o expresie regulată și substituția este ceea ce vrem să înlocuim cu orice meci. În acest caz căutăm cereri care se termină în jpg, png și gif; dacă găsim că vrem să folosim o substituție necompletată. Totuși, în steaguri, îi spunem și ceea ce vrem să facem, NC înseamnă niciun caz, F trimite o eroare interzisă 403 utilizatorilor și L spune motorului să nu mai rescrie, astfel încât nu se aplică alte reguli.

Acest lucru este destul de simplu, dar probabil că suntem interesați să îi spunem utilizatorului că nu vrem să ne facă legătura cu imaginile noastre, așa că să redirecționăm toate cererile la o imagine în loc să trimitem o eroare interzisă de 403. Aceasta se face prin înlocuirea ultimei linii cu acest cod.

 #show o imagine alternativă RewriteRule \. (jpg | png | gif) $ http://demo.collegeaintcheap.com/envato/htaccess/hotlink/images/hotlink.jpeg [NC, R, L]

Puteți schimba urlul pe orice cale de imagine dorită pe domeniul dvs., dar amintiți-vă că nu trebuie să se termine în jpg, png sau gif, deoarece va aplica din nou regula și va trimite serverul într-o buclă neterminată. Am ales să utilizez extensia .jpeg mai veche pentru a repara acest lucru. R steagul care a înlocuit F trimite pur și simplu o redirecționare.

2. Blocați utilizatorul după adresa IP

Acesta este un sfat foarte mic dacă aveți un spammer pe site-ul dvs. Web. Dacă găsiți adresa IP în jurnalele dvs., pur și simplu adăugați-o într-un fișier htaccess.

 Ordonare Deny, Permite Deny de la 24.121.202.23 # Deny from 0.0.0.0

Folosind directiva Ordine din modulul mod_access putem specifica IP-urile pentru a le nega și a le permite. Pur și simplu folosind sintaxa Se refuză de la ADDRESS IP putem interzice acelor utilizatori să acceseze directorul nostru.

3. Documente de eroare

Toate site-urile gata de producție ar trebui să utilizeze pagini personalizate de eroare pentru o atingere profesională. Acest lucru este ușor prin utilizarea directivei ErrorDocument din nucleul Apache. O pagină particularizată este mult mai bună decât paginile implicite de eroare Apache.

 ErrorDocument 404 http://demo.collegeaintcheap.com/envato/htaccess/errors/404.html ErrorDocument 403 http://demo.collegeaintcheap.com/envato/htaccess/errors/403.html ErrorDocument 500 http: // demo. collegeaintcheap.com/envato/htaccess/errors/500.html

ErrorDocument ia două argumente cod de eroare și document. În codul de mai sus am creat documente de eroare pentru cele mai frecvente 3 erori HTTP: 404 nu a fost găsit, 403 eroare interzisă și 500 server. Apoi, puteți furniza adresa URL completă sau calea relativă a documentelor de eroare. De asemenea, le puteți redirecționa către un script PHP care înregistrează erorile într-o bază de date sau le trimite prin e-mail (poate fi enervant). Aceasta este o modalitate excelentă de a prelua controlul asupra erorilor din aplicația dvs. web, asigurați-vă că ați verificat pagina de eroare 404 a paginii de eroare Smashing Magazine pentru inspirație.

4. Redirecționați în timpul efectuării actualizărilor

Dacă efectuați o actualizare majoră a site-ului, cel mai probabil ar trebui să redirecționați utilizatorii către o pagină care le informează. Acest lucru împiedică utilizatorii să vadă pagini sparte sau posibile găuri de securitate în timp ce aplicația se încarcă. Un avertisment de luat în considerare este că dorim să permitem anumite adrese IP în site pentru testare înainte de a intra în viață, toate acestea pot fi obținute într-un fișier htaccess.

 RewriteEngine pe RewriteCond% REQUEST_URI! /Upgrade.html$ RewriteCond% REMOTE_HOST! ^ 24 \ .121 \ .202 \ .30 RewriteRule $ http://demo.collegeaintcheap.com/envato/htaccess/upgrade/upgrade. html [R = 302, L]

Folosim din nou motorul de rescriere pentru a face acest lucru, dar într-un fel invers. Mai întâi trebuie să setăm o condiție care exclude documentul care descrie actualizarea, altfel serverul nostru începe o buclă fără sfârșit. În continuare, excludem ca o singură adresă IP să fie redirecționată în scopuri de testare. În cele din urmă, vom folosi regula de rescriere pentru a trimite utilizatori către o pagină de actualizare. Steagurile pe care le-am analizat anterior, cu excepția momentului în care setăm redirecționarea către un cod de stare de 302, spunând browser-ului că pagina sa mutat temporar și pentru a gestiona în mod corespunzător cache-ul. Smashing Magazine, din nou, are o mare prezentare a paginilor de întreținere eficiente.

5. Ascunderea listei de directori

Din numeroase motive de securitate, este o idee bună să restricționați înregistrarea directoarelor, comportamentul implicit în Apache. Acest lucru se poate face printr-o linie simplă în fișierul nostru htaccess, care îi împiedică pe vizitatori să vadă lista noastră de directoare.

 Opțiuni -Index

Acum, utilizatorii care solicită un director care nu are un fișier index, le va afișa o pagină de eroare 403 interzisă.

Concluzie

Acestea sunt câteva dintre utilizările mele preferate de htaccess. Lăsați-vă în comentarii! Sunt disponibil pentru ajutor în comentarii sau pe twitter. Dacă există un mare interes, voi face mai multe tutoriale htaccess cu soluții la solicitările dumneavoastră în comentarii. Vă mulțumim pentru lectură!

  • Urmăriți-ne pe Twitter sau abonați-vă la feed-ul RSS NETTUTS pentru mai multe tutoriale și articole zilnice de dezvoltare web.


Cod