Mod_rewrite Introductie en Cheat Sheet – Quick Reference

Openbaarmaking: Uw steun helpt de site draaiende te houden! We verdienen een verwijzingsvergoeding voor sommige van de services die we op deze pagina aanbevelen.


mod_rewrite is onderdeel van de Apache-webserversoftware die op de computer van uw webhost draait. Hiermee kan een URL dynamisch worden gewijzigd of ‘herschreven’.

Je ziet mod_rewrite in actie als je WordPress gebruikt met ‘mooie’ permalinks ingeschakeld. Standaard worden alle WordPress-pagina’s geladen met een URL die een ID-nummer bevat, en mogelijk andere variabelen die WordPress vertellen wat ze moeten laden. Maar als mooie permalinks zijn ingeschakeld, veranderen mod_rewrite-regels die lelijke variabelen in woorden. We noemen de resulterende URL’s soms ‘schoon’.

Herschrijven met mod_rewrite is in wezen een proces van het direct vertalen van een URL van een vuile naar een schone. De bezoeker ziet de URL nooit veranderen in de adresbalk, aangezien de verwerking door Apache wordt afgehandeld voordat er iets naar de browser van de bezoeker wordt gestuurd.

Het is perfect mogelijk om een ​​website te runnen zonder mod_rewrite of schone URL’s te gebruiken. Maar dit is waarom de meeste mensen het gebruiken:

  • Om URL’s gemakkelijker leesbaar te maken voor mensen. ‘Mooie’ URL’s zijn beter te onthouden, gemakkelijker te typen en gemakkelijker voor te lezen.
  • Om URL’s gemakkelijker te interpreteren voor zoekmachines. Een mooie URL vertelt de zoekmachine waar de pagina over gaat, maar een wirwar van ID-nummers en variabelen niet. Zoekmachines houden van semantiek, dus het herschrijven van de URL helpt ervoor te zorgen dat de pagina correct wordt gecategoriseerd en geïndexeerd.
  • Om tijdelijk omleidingen van het ene bestand of pad naar het andere te maken.

Mod_rewrite-regels opstellen

Als u Apache gebruikt, moet u uw webhost vragen om mod_rewrite in te schakelen in het http.conf-bestand op uw account. In veel gevallen is mod_rewrite standaard ingeschakeld.

Vervolgens moet u een .htaccess-bestand maken in de hoofdmap van uw hostingaccount. Het .htaccess-bestand bestuurt de hoofdmap en alle bestanden eronder, tenzij je het vervangt door een ander .htaccess-bestand lager in de mappenboom. Als je al een .htaccess-bestand hebt, maak dan een reservekopie voordat je verdergaat.

Herschrijfregels bestaan ​​uit twee delen. De eerste regel activeert de herschrijf-engine-richtlijn in Apache. (De regel die begint met # is een opmerking die wordt genegeerd.) Het tweede deel van de mod_rewrite-instructie vertelt de herschrijfengine hoe de URL moet worden getransformeerd. Dus we stellen de toestand vast en dan vertellen we Apache wat hij moet doen. Hier is een voorbeeld van een regel die de bezoeker van het ene bestand naar het andere leidt.

# Schakel herschrijven in
RewriteEngine aan
# Transformeer oude naam.html in nieuwe naam.html
RewriteRule ^ oldname.html $ newname.html

Deze regel controleert op een bestand met de naam oldname.html (de voorwaarde). Als het een match vindt, wordt het dynamisch vervangen door newname.html. De eindgebruiker ziet de inhoud van oldname.html, maar ziet newname.html in de URL-balk van hun browser. Als mod_rewrite niet overeenkwam met oldname.html, zou de regel worden genegeerd.

Patronen zoeken

Het maken van één regel voor elke URL kost veel tijd, dus we moeten reguliere expressies gebruiken. Reguliere expressies zoeken naar patronen en vervangen een stuk van een string door een ander. Neem dit voorbeeld:

# Schakel herschrijven in
RewriteEngine aan
# Zet auteur / NAAM / om in author.php? Id = NAAM
RewriteRule ^ author / ([a-z] +) /? $ Author.php? Id = $ 1 [L]

Om het op te splitsen, hier is hoe de voorwaarde ^ author / ([a-z] +) /? $ Werkt:

  • ^ is het begin van de regel
  • auteur / is de tekenreeks die we zoeken in de oorspronkelijke URL
  • ([a-z] +) is een jokerteken – het zoekt naar woorden die verschijnen na auteur /
  • /? voegt de schuine streep toe aan het einde van de URL
  • $ markeert het einde van de voorwaarde.

En zo werkt de actie author.php? Id = $ 1:

  • author.php? id = is de string die we willen schrijven
  • $ 1 is een tijdelijke aanduiding voor de woorden die we in de bovenstaande staat hebben gevonden.

Aan het einde van de regel is [L] een vlag die Apache vertelt om te stoppen met het toepassen van meer regels als deze wordt verwerkt.

Dit is slechts een heel eenvoudig voorbeeld van wat mod_rewrite kan doen. In plaats van [a-z] te schrijven, zouden we [xyz] kunnen gebruiken om de letters x, y of z te vinden, of (y | n) om y of n te vinden. In de onderstaande bronnen vindt u meer volledige verwijzingen naar de syntaxis van reguliere expressies.

RewriteRule-vlaggen

In het bovenstaande voorbeeld hebben we aan het einde van de regel een vlag [L] toegevoegd. Vlaggen zijn optioneel. Ze moeten aan het einde van de regel in een enkele set vierkante haken staan ​​en als u meerdere vlaggen wilt gebruiken, moet u er komma’s tussen plaatsen.

Vlaggen kunnen volledig worden uitgeschreven of als verkorte versie. Hoewel het gebied met korte vlaggen gemakkelijker te typen is, is het een goed idee om lange vlaggen te gebruiken als u uw code gemakkelijk leesbaar wilt maken.

  • B: ontsnapt aan niet-alfanumerieke tekens; Mogelijk moet AllowEncodedSlashes zijn ingesteld op Aan.
  • C of chain: koppelt de regel aan de volgende regel in uw .htaccess-bestand; de tweede wordt alleen uitgevoerd als de eerste resulteert in een wedstrijd.
  • CO of cookie: maak een cookie wanneer een regel overeenkomt; vereist aanvullende kenmerken.
  • DPI of discardpath: verwijdert PATH_INFO in de herschreven URL.
  • E of env: stelt een omgevingsvariabele in.
  • EINDE: vergelijkbaar met L, dit stopt de verwerking van herschrijven.
  • F of verboden: retourneert een 403 Verboden status met het antwoord op de regel.
  • G of weg: geeft een 410 Verdwenen status terug met het antwoord op de regel.
  • H of handler: dwingt de regel om een ​​bepaalde handler te gebruiken, gespecificeerd als een variabele.
  • L of laatste: stopt regelverwerking.
  • N of volgende: start de huidige set regels opnieuw, met het resultaat van de regel als invoer.
  • NC of nocase: schakelt hoofdlettergevoeligheid voor de regel uit.
  • NE of noescape: converteert speciale tekens naar hun equivalente hex-codes.
  • NS of nosubreq: voorkomt dat herschrijvingen worden toegepast op subaanvragen.
  • P of proxy: pusht het resultaat van de regel naar mod_proxy en negeert alle resterende regels.
  • PT of passthrough: zet een bestandspad om in een URL.
  • QSA of qsappend: combineert de queryreeks met een nieuwe.
  • QSD of qsdiscard: negeert de oude queryreeks en vervangt deze.
  • QSL of qslast: splitst een zoekreeks op het laatste vraagteken in de tekenreeks.
  • R of omleiding: geef een HTTP-omleiding uit.
  • S of overslaan: slaat een aantal regels over; moet worden gedefinieerd als [S = n], waarbij n het aantal over te slaan regels is.
  • T of type: Stelt het MIME-type van de regelreactie in.

webhosting coupon

Op zoek naar een goede deal voor mod_rewrite-hosting?
A2 Hosting scoorde # 1 in onze recente snelheidstests. U kunt momenteel tot 50% besparen op hun ontwikkelaarsvriendelijke plannen. Gebruik deze kortingslink
om de deal te krijgen.

Servervariabelen

De onderstaande lijst bevat veel servervariabelen, waarvan u er enkele kunt gebruiken met mod_rewrite. Niet alle variabelen worden door alle servers ondersteund en evenzo kunt u mogelijk servervariabelen gebruiken die hier niet worden vermeld.

Als u al bekend bent met HTTP-headers, zullen veel van de servervariabelen in deze lijst u bekend voorkomen, maar er zijn er een paar die specifiek zijn bedoeld voor gebruik met mod_rewrite.

  • API_VERSION: de datum van de API-versie.
  • AUTH_TYPE: het authtype; geeft NONE, BASIC, DIGEST of FORM terug.
  • CONN_REMOTE_ADDR: het peer-IP-adres.
  • CONTEXT_DOCUMENT_ROOT: informatie over de maptoewijzing in Apache.
  • CONTEXT_PREFIX: informatie over de maptoewijzing in Apache.
  • DOCUMENT_ROOT: het absolute pad voor het document.
  • HANDLER: de naam van de handler.
  • HTTP_ACCEPT: de HTTP-accept-header, indien aanwezig in de HTTP-request-header.
  • HTTP_COOKIE: de cookie, indien aanwezig in de HTTP-verzoekkop.
  • HTTP_FORWARDED: het daadwerkelijke pad, indien aanwezig in de HTTP-aanvraagkop.
  • HTTP_HOST: de huidige server, indien aanwezig in de HTTP-verzoekkop.
  • HTTP_PROXY_CONNECTION: het HTTP-proxypad, indien aanwezig in de HTTP-verzoekkop.
  • HTTP_REFERER: de verwijzende pagina-URL.
  • HTTP_USER_AGENT: de user-agent die werd gebruikt om de pagina te openen.
  • HTTP2: of de verbinding HTTP2 gebruikt; geeft AAN of UIT terug.
  • HTTPS: of de verbinding HTTPS gebruikt; geeft AAN of UIT terug.
  • IPV6: of de verbinding IPVS gebruikt; geeft AAN of UIT terug.
  • IS_SUBREQ: of het verzoek een subverzoek is; waar of niet waar.
  • PATH_INFO: padgegevens die volgen op een bestandsnaam.
  • QUERY_STRING: de tekens in een URL, na het vraagteken.
  • REMOTE_ADDR: het IP-adres van de gebruiker.
  • REMOTE_HOST: de volledig gekwalificeerde domeinnaam van de gebruiker.
  • REMOTE_USER: de geverifieerde gebruikersnaam van de gebruiker.
  • REMOTE_IDENT: de geverifieerde gebruikersnaam van de gebruiker, geretourneerd door identd.
  • REQUEST_FILENAME: het lokale pad naar het bestand of script in de aanvraag.
  • REQUEST_METHOD: de aanvraagmethode; HEAD, PUT, GET of POST.
  • REQUEST_SCHEME: het schema in de verzoek-URI.
  • REQUEST_URI: de verzoek-URI, als een pad.
  • SCRIPT_FILENAME: het absolute pad voor het script.
  • SCRIPT_GROUP: de naam van de scriptgroep.
  • SCRIPT_USER: de gebruiker die het script bezit.
  • SERVER_ADDR: het server-IP waarop het .htaccess-bestand is opgeslagen.
  • SERVER_ADMIN: de serverbeheerder, zoals geconfigureerd in Apache.
  • SERVER_NAME: de servernaam, zoals geconfigureerd in Apache.
  • SERVER_PORT: het poortnummer waarnaar de aanvraag is verzonden.
  • SERVER_PROTOCOL: het protocol en de herziening van het verzoek.
  • SERVER_SIGNATURE: de serverversie en hostnaam.
  • SERVER_SOFTWARE: de ID-reeks voor de server.
  • THE_REQUEST: het verzoek in zijn geheel.
  • TIJD: de datum en tijd in het formaat JJJJMMDDUUMMSS.
  • TIME_DAY: de huidige dag.
  • TIME_HOUR: het huidige uur.
  • TIME_MIN: de huidige minuut.
  • TIME_MON: de huidige maand.
  • TIME_SEC: de huidige seconde.
  • TIME_WDAY: de huidige dag, geretourneerd als een nummer (beginnend met 0 voor zondag).
  • TIME_YEAR: het huidige jaar.

Middelen

  • Een beginnershandleiding voor Mod_rewrite: deze gids komt uit 2004, maar biedt een goede basis in de principes van mod_rewrite.
  • URL herschrijven voor beginners: een uitgebreide gids voor beginners en halfgevorderden.
  • Apache Rewrite Cheatsheet: een HTML-versie van een spiekbriefje dat oorspronkelijk is gepubliceerd op iLoveJackDaniels.com.
  • Inleiding tot geavanceerde reguliere expressies: ontwikkel uw kennis van reguliere uitdrukkingen met deze gids.
  • RegEx Pal: controleer de syntaxis van uw reguliere expressie voordat u deze op uw site implementeert.

Overzicht

mod_rewrite is een handige en krachtige manier om het gedrag van Apache te beheersen. Je kunt veel dingen doen met mod_rewrite die we hier niet hebben behandeld. Deze omvatten doorverwijzing, het voorkomen van hotlinking van afbeeldingen, het verbannen van bepaalde bezoekers van uw site en meer. De beste manier om mod_rewrite te gebruiken, is door te leren over reguliere expressies.

Verder lezen en bronnen

We hebben meer handleidingen, tutorials en infographics met betrekking tot webontwikkeling:

  • PHP-introductie en bronnen: leer alles over de meest populaire backend-taal die op internet wordt gebruikt.
  • Netwerkprogrammering met internetsockets: leer alles over netwerken op internet.
  • MySQL Inleiding en bronnen: MySQL is een van de meest populaire databases op internet.

Hoe u het juiste CMS kiest

Weet u niet zeker welk CMS u wilt gebruiken? Bekijk ons ​​artikel Hoe u het juiste CMS kiest.

De ultieme lijst met webmastertools A-Z
Hoe u het juiste CMS kiest

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me