5 Leuke en praktische Htaccess-oplossingen

Vandaag zullen we enkele praktische toepassingen van htaccess-bestanden bespreken die u in uw webtoepassingen kunt gebruiken.

Vereisten

Htaccess-bestanden zijn platte-tekstconfiguratiebestanden die worden gebruikt door de Apache HTTP-webserver. Hiermee kunnen gebruikers opties op mapniveau instellen zonder toegang tot de httpd.conf het dossier. Als zodanig is het vereist dat uw server Apache gebruikt en een webhost die dit toestaat htaccess bestanden (de meest populaire hosts doen).

Ik ga uit van een basiskennis van htaccess, maar als je je wilt opfrissen bekijk dan dit artikel van Joseph Pecoraro

1. Voorkomen dat hotlinken

Hotlinking of inline linking is wanneer een website rechtstreeks linkt naar een object op een andere site. Dit kost de bandbreedte van de hostingwebsite om de afbeelding op de pagina van de tweede site te leveren. Op populaire fotosites kan dit een groot probleem zijn, zij het soms humoristisch.



http://www.shapelessmass.com

Er zijn manieren om dit groeiende probleem met behulp van htaccess op te lossen. Eerst hier is het beeld dat we proberen te beschermen.

 RewriteEngine op RewriteCond% HTTP_REFERER! ^ $ #Domains die kunnen linken naar afbeeldingen #add zoveel als je wilt RewriteCond% HTTP_REFERER! ^ Http (s)?: // (www \.)? Demo.collegeaintcheap.com [NC] # RewriteCond% HTTP_REFERER! ^ Http (s)?: // (www \.)? Noahhendrix.com [NC] # vertonen geen afbeelding bij hotlinked RewriteRule \. (Jpg | png | gif) $ - [ NC, F, L]

We zullen dit regel voor regel doorlopen.

  1. Eerst moeten we de rewrite-engine in Apache inschakelen, zodat we het verzoek van de gebruiker kunnen omleiden.
  2. Vervolgens beginnen we met het instellen van onze voorwaarden met RewriteCond. Dit is een functie die twee argumenten vereist: TestString en CondPattern. TestString is de string waarnaar we onze CondPattern willen controleren (met behulp van reguliere expressies). $ HTTP_REFERER is een variabele geleverd door Apache die het domein bevat waar het verzoek vandaan kwam, in dit geval willen we verzoeken toestaan ​​van lege HTTP-verwijzers om gebruikers te beschermen die zich op een proxyserver bevinden die lege verwijzingen verzendt.
  3. Vervolgens stellen we de domeinen in waarvan we toestaan ​​dat onze afbeeldingen worden gekoppeld met dezelfde syntaxis, behalve dat we nu een URL opgeven. De [NC] vlag aan het einde van het commando geeft de motor de opdracht om de behuizing te negeren. U kunt zoveel lijndomeinen toevoegen als u hier wilt, met dezelfde syntaxis. Omwille van het voorbeeld heb ik mijn persoonlijke domein toegevoegd, maar het is becommentarieerd.
  4. Ten slotte is de laatste regel de RewriteRule die we willen gebruiken als aan een van de bovenstaande voorwaarden niet wordt voldaan. Er zijn ook twee argumenten voor nodig Patroon en vervanging, waar patroon een expressie met reguliere expressie is, en vervanging is waar we elke match mee willen vervangen. In dit geval zijn we op zoek naar verzoeken die eindigen in jpg, png en gif; indien gevonden, willen we een lege substitutie gebruiken. In de vlaggen vertellen we echter ook wat we willen doen, NC betekent geen geval, F stuurt een 403 verboden fout naar de gebruiker, en L vertelt de motor om te stoppen met herschrijven zodat er geen andere regels worden toegepast.

Dit is vrij eenvoudig, maar misschien willen we de gebruiker laten weten dat we niet willen dat deze onze afbeeldingen hotlinken, dus laten we alle hotlinked-verzoeken omleiden naar een afbeelding in plaats van een 403-verboden fout te verzenden. Dit wordt gedaan door de laatste regel te vervangen door deze code.

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

U kunt de URL naar elk gewenst afbeeldingspad in uw domein wijzigen, maar onthoud dat dit niet moet eindigen in jpg, png of gif omdat het de regel opnieuw toepast en de server in een oneindige lus verzendt. Ik heb ervoor gekozen om de oudere .jpeg-extensie te gebruiken om dit op te lossen. De R vlag die is vervangen F verzendt eenvoudig een omleiding.

2. Blokkeer gebruiker op IP-adres

Dit is een goede kleine tip als je een spammer op je website hebt staan. Als u hun IP in uw logboeken kunt vinden, voegt u het gewoon toe aan een htaccess-bestand.

 Order Deny, Allow Deny from 24.121.202.23 # Weigeren van 0.0.0.0

Met behulp van de richtlijn Order in de module mod_access kunnen we IP-adressen opgeven die moeten worden geweigerd en toegestaan. Gewoon de syntaxis gebruiken Weigeren van IP-adres we kunnen deze gebruikers verbieden toegang te krijgen tot onze directory.

3. Foutdocumenten

Alle productiegereedbare sites moeten aangepaste foutpagina's gebruiken voor een professioneel tintje. Dit is eenvoudig met behulp van de ErrorDocument-richtlijn in de kern van Apache. Een aangepaste pagina is veel beter dan de standaard Apache-foutpagina's.

 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 neemt twee argumenten foutcode en document. In de bovenstaande code heb ik foutdocumenten gemaakt voor de 3 meest voorkomende HTTP-fouten: 404 niet gevonden, 403 verboden en 500 serverfouten. Vervolgens kunt u de volledige URL of het relatieve pad naar uw foutdocumenten opgeven. Je zou ze ook kunnen omleiden naar een PHP-script dat de fouten in een database registreert of deze naar je e-mailt (kan echter vervelend worden). Dit is een geweldige manier om fouten in je webtoepassing onder controle te krijgen, zorg ervoor dat je de 404 error page showcase van Smashing Magazine bekijkt voor inspiratie.

4. Doorverwijzen tijdens het uitvoeren van upgrades

Als u een belangrijke site-upgrade uitvoert, moet u waarschijnlijk gebruikers omleiden naar een pagina waarop ze worden geïnformeerd. Dit voorkomt dat gebruikers gebroken pagina's of potentiële gaten in de beveiliging zien terwijl de applicatie aan het uploaden is. Een waarschuwing is dat we bepaalde IP-adressen op de site willen laten testen voordat deze live gaan. Dit alles kan worden bereikt in een htaccess-bestand.

 RewriteEngine op 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]

We gebruiken de herschrijfengine opnieuw om dit te doen, maar op een soort omgekeerde manier. Eerst moeten we een voorwaarde instellen die het document uitsluit dat de upgrade beschrijft, anders start onze server een oneindige lus. Vervolgens sluiten we uit dat een enkel IP-adres wordt omgeleid voor testdoeleinden. Ten slotte gebruiken we de herschrijfregel om gebruikers naar een upgradepagina te sturen. De vlaggen waar we eerder naar hebben gekeken, behalve deze keer dat we de omleiding instellen op een 302 statuscode, de browser vertellen dat de pagina tijdelijk is verplaatst en dienovereenkomstig omgaan met caching. Smashing Magazine heeft opnieuw een geweldige showcase van effectieve onderhoudspagina's.

5. Directoryvermelding verbergen

Om verschillende veiligheidsredenen is het een goed idee om de directorylijst, het standaardgedrag in Apache, te beperken. Dit kan gedaan worden met een eenvoudige regel in ons htaccess-bestand, die we kunnen voorkomen dat bezoekers onze directory-vermeldingen te zien krijgen.

 Opties -Indexen

Nu gebruikers die een map aanvragen die geen indexbestand heeft zal het een 403 verboden foutpagina tonen.

Conclusie

Dit zijn enkele van mijn favoriete toepassingen van htaccess. Laat de jouwe in de comments! Ik ben beschikbaar voor hulp bij de opmerkingen of op twitter. Als er veel interesse is, zal ik meer htaccess tutorials doen met oplossingen voor uw verzoeken in de comments. Bedankt voor het lezen!

  • Volg ons op Twitter, of abonneer je op de NETTUTS RSS-feed voor meer dagelijkse webontwikkelingen, tuts en artikelen.