La oss se på noen spørsmål nedenfor:
1. Hvordan aktivere mod_rewrite på Apache?
2. Litt teori. Hvordan mod_rewrite fungerer.
3. Et enkelt eksempel.
4. Hva bør gjøres i manuset?
5. Hva gir denne tilnærmingen og mod_rewrite generelt?
6. Mulige feil.
7. Alma Mater for å lære mod_rewrite
1. Hvordan aktivere mod_rewrite på Apache?
For å aktivere mod_rewrite på Apache-nettserveren, må du redigere httpd.conf-filen.
For å gjøre dette, åpne httpd.conf-filen, se etter linjen:
Koden |
#LoadModule rewrite_module modules/mod_rewrite.so |
Og fjern kommentaren
Koden |
LoadModule rewrite_module modules/mod_rewrite.so |
Deretter starter vi webserveren på nytt.
2. Litt teori. Hvordan mod_rewrite fungerer.
Som regel forstår ikke programmerere som nettopp har møtt mod_rewrite helt hvordan denne mekanismen fungerer. På grunn av dette har de i lang tid puslet over «barnslige feil.
Så. Som vi vet er det en såkalt GET-forespørsel, dvs. http://example.com/2005/12/31/theme.html , som "kommer" til nettserveren (i vårt eksempel, Apache). Hva gjør serveren. Først av alt ser han på innstillingene til denne verten. Så bestemmer han seg for hva han skal gjøre videre. Send enten tilbake innholdet på hovedsiden (for eksempel index.html) til brukeren, eller send index.php header-skriptkoden for tolkning, eller returner en 404-feil osv. osv. La oss anta at vi vil fortsette å jobbe med index.phtml. Hva som vil skje neste, vet du sikkert allerede. Vi vil fokusere på øyeblikket når serveren ser på vertsinnstillingene. Det kan være et stort antall av dem. Men uten feil prøver serveren å finne .htaccess-filen i roten. (Apache-konfigurasjonsfil på farten). Det er i denne filen mod_rewrite-transformasjonsreglene er plassert (de kan også finnes i httpd.conf). De. Jeg sier stadig at URL-konvertering gjøres FØR skript fungerer.
Algoritmen er følgende:
1. Serveren mottar en GET-forespørsel: http://example.com/2005/12/31/theme.html
2. Finner mod_rewrite-transformasjonsregler i .htaccess.
3. Transformers.
4. Omdirigerer til index.phtml i henhold til konverteringsreglene.
5. Skriptet begynner å fungere.
3. Et enkelt eksempel.
Mange av dere har sett denne tingen: http://example.com/2005/12/31/theme.html . Slike adresser brukes ofte av nyhetssider. Naturligvis har de ikke alle disse mappene og html-filene. Alle data behandles av scriptet. Nedenfor vurderer vi et av alternativene for en slik transformasjon. Jeg skal fortelle deg det med en gang. Det er mange alternativer, jeg tar bare ett spesielt tilfelle, som jeg selv bruker og anser det som det mest universelle.
Koden |
Omskriv motor på Alternativer +FølgSymlinks RewriteCond %(REQUEST_FILENAME) !-f RewriteCond %(REQUEST_FILENAME) !-d RewriteRule ^(.*)$ index.phtml |
La oss vurdere alt i orden.
To påfølgende RewriteCond er forhold som det er en OG mellom.
De. Hvis den forespurte adressen ikke er en ekte fil eller katalog, omdirigerer du til index.phtml. De. Derfor innså vi at våre forespørsler til http://example.com/2005/12/31/theme.html vil bli behandlet av index.phtml-skriptet. Nå er hele spørsmålet hvordan vi finner ut i skriptet at brukeren ber om /2005/12/31/theme.html.
Det er en lyrisk vri her. Noen få ord om RewrtiterRule. Direktivet vurderer en parameter. Den første (i vårt tilfelle: ^(.*)$) er en streng med regulære uttrykk som sjekker om den forespurte adressen (i vårt tilfelle: /2005/12/31/theme.html) samsvarer med mønsteret (i vårt tilfelle, ja, dvs. j. mønsteret sier: "enhver tegn 0 eller flere ganger" fra begynnelsen til slutten av strengen - ^(.*)$). Hvis mønsteret er tilfredsstilt, omdirigerer mod_rewrite forespørselen til filen spesifisert i den andre parameteren (i vårt tilfelle: index.phtml).
Nå er hele spørsmålet hvordan vet skriptet om "/2005/12/31/theme.html". Det er to alternativer.
Først:
Koden |
RewriteRule ^(.*)$ index.phtml?$1 [L] |
Der "/2005/12/31/theme.html" vil bli sendt til index.phtml-skriptet i QUERY_STRING-variabelen, fordi $1 er den første parentesen i mønsteret, som tilsvarer: http://example.com/?/2005/12/31/theme.html . Men har du sett dette noe sted? Nei. Derfor bruker vi QSA som nøkkel.
Det er en servervariabel (som skript har tilgang til) REQUEST_URI som alltid inneholder en GET-forespørsel ("/2005/12/31/theme.html"). Så hvis vi omdirigerer til index.phtml, bør REQUEST_URI få verdien av index.phtml, MEN QSA-nøkkelen erstatter den med "/2005/12/31/theme.html". De. vi omdirigerer fysisk til index.phtml og viser logisk skriptet som brukeren åpnet "/2005/12/31/theme.html".
4. Lage et manus
Vi jobber nå med index.phtml, skriptet vi omdirigerte til. Jeg sier med en gang, koden er i PHP, fordi Jeg er ikke god i andre språk for nettet.
Så enkelt er det. Nå kan du operere på denne matrisen. For å gjøre det enda tydeligere. Jeg skal gi deg en analogi. La oss si at nettadressen er: http://example.com/index.phtml?year=2005&m...y=31&news=theme . Som vi vet, i skriptet, vil disse parameterne være tilgjengelige gjennom $_GET-matrisen.
så, $_GET['år'] er det samme som $arr, $_GET['month'] er det samme som $arr, $_GET['day'] er det samme som $arr, $_GET ['tema' ] er det samme som $arr (må bare kutte av ".html" også).
5. Hva gir denne tilnærmingen og mod_rewrite generelt?
For det første, for søkemotorer, er en URL som: http://example.com/?/2005/12/31/theme.html mye mer behagelig enn http://example.com/index.phtml?year=2005&m. .. y=31&news=theme , og for brukere er du også enig.
Andre øyeblikk. Med mod_rewrite er muligheten for et XSS-angrep praktisk talt eliminert, siden include bug er praktisk talt overlappet. I dette eksemplet er ikke dette så synlig, men ta mitt ord for det, det er det. Men i alle fall kommer det an på hodet ditt!!!
Det tredje punktet er skjulet av teknologien som faktisk brukes. dette kompliserer delvis hackingen av nettstedet, men dette er bare den øvre grensen, som gjørme på en stillestående dam.
6. Mulige feil
Vanligvis kan følgende feil oppstå:
404 - Dokument ikke funnet. Årsak: RewriteRule-regler utløses ikke.
403 - Forbudt - tilgang nektet. Omskrivingsreglene inneholder en logisk feil som oppstår på grunn av et forsøk på å omdirigere til en fil hvor det ikke er tilgang (/index.php - det vil gi akkurat dette, fordi / i UNIX-systemer betyr banen fra SERVER-rotkatalogen, der du har naturligvis tilgang vil ikke).
500 – Intern serverfeil. Årsaken er en syntaksfeil i .htaccess-filen.
7. Alma Mater for å lære mod_rewrite
Personlig har denne artikkelen hjulpet meg mye. Her er abstraktet hennes, og nedenfor legger jeg ved en ZIP-fil. Den inneholder denne artikkelen i RTF-format,
Sitat |
"Den største fordelen som mod_rewrite gir deg er konfigurerbarheten og fleksibiliteten som ligger i Sendmail. Ulempen med mod_rewrite er konfigurerbarheten og fleksibiliteten som ligger i Sendmail." Brian Behlendorf Apache-gruppen Brian Moore Velkommen til verden av mod_rewrite, den sveitsiske kniven for URL-omskrivinger! Denne modulen opererer på fullstendige URL-er (inkludert baneinformasjon) i både serverkontekst (httpd.conf) og katalogkontekst (.htaccess) og kan til og med generere spørringsstrengdeler som et resultat. Det konverterte resultatet kan føre til at forespørselen blir behandlet internt, omdirigert eksternt eller til og med sendt gjennom en intern proxy-modul. Imidlertid kommer all denne funksjonaliteten og fleksibiliteten med en ulempe: kompleksitet. Så ikke forvent å forstå hele denne modulen på én dag. Ralf S. Engelschall |
Viktig:
Filstøtte ".htaccess" kun tilgjengelig på Linux-hosting. På Windows vertsfunksjon ".htaccess" kjører filen web.config.
Støttemodul ".htaccess" tilgjengelig på alle delte hostingplaner basert på Linux OS. Hvis du mottar en melding som sier at det ikke er støtte mens du installerer CMS ".htaccess" bare ignorere det.
Hvis du setter opp Apache-nettserveren, men ikke har .htaccess, lag den og skriv de nødvendige direktivene.
Å lage .htaccess, gå inn i vertskontrollpanelet i henhold til instruksjonene: Plasser filen .htaccess i nettstedskatalogen ved å bruke artikkelen: .
Hvis du ved et uhell slettet en fil .htaccess, gjenopprette den. Eller legg til en standardfil .htaccess for CMS:
For å se skjulte filer (som starter med en prikk) i cPanel, følg disse trinnene:
Modul "mod_rewrite" finnes på alle Linux-vertsplaner. For å aktivere "mod_rewrite" legge til i filen .htaccess visningslinje.
I denne opplæringen lærer vi hvordan du administrerer URL-omskriving ved hjelp av Apache 2 og mod_rewrite-modulen. Denne modulen lar deg omskrive URL-er på en renere måte, oversette menneskelesbare stier til kodevennlige søkestrenger eller omdirigere URL-er basert på tilleggsbetingelser.
Denne veiledningen er delt inn i to deler. Den første installerer eksempelnettstedet og viser et enkelt omskrivingseksempel. Den andre delen inneholder to mer dyptgående eksempler på vanlige omskrivingsregler.
Ved å følge denne veiledningen trenger du:
Først må vi aktivere mod_rewrite . Den er tilgjengelig, men følger ikke med en ren installasjon av Apache 2.
Sudo a2enmod omskriving
Den aktiverer modulen eller advarer deg om at modulen allerede er aktivert. Start Apache på nytt for at endringene skal tre i kraft.
mod_rewrite er nå fullt aktivert. I neste trinn vil vi lage en .htaccess-fil som vi skal bruke til å definere omskrivingsreglene for omdirigeringen.
.htaccess-filen lar oss endre reglene for omskrivning uten å få tilgang til serverens konfigurasjonsfiler. Av denne grunn er .htaccess avgjørende for sikkerheten til nettapplikasjonen din. Perioden som går foran filnavnet sikrer at filen er skjult.
Merk
Eventuelle regler du plasserer i .htaccess-filen kan også plasseres direkte i serverens konfigurasjonsfiler. Faktisk anbefaler den offisielle Apache-dokumentasjonen å bruke serverkonfigurasjonsfiler i stedet for .htaccess fordi Apache behandler dem raskere.
I dette enkle eksemplet vil imidlertid ytelsesgevinsten være ubetydelig. Det er også nyttig å sette .htaccess-regler, spesielt med flere nettsteder på samme server. Det krever ikke omstart av serveren for at endringene skal tre i kraft, og det krever ikke superbrukerprivilegier for å redigere disse reglene, noe som gjør vedlikehold og endringer mulig fra ikke-privilegerte kontoer. Noen populære programmer med åpen kildekode, som Joomla, er ofte avhengige av .htaccess-filen i programvaren for å modifisere og lage tilleggsregler etter behov.
Vi må installere og sikre noen flere innstillinger før vi kan komme i gang.
Som standard tillater Apache ikke bruk av .htaccess-filen for å håndheve omskrivingsregler, så du må tillate endringer i filen først. Åpne Apaches standard konfigurasjonsfil ved å bruke nano eller din favoritt tekstredigerer.
sudo nano /etc/apache2/sites-available/000-default.conf
Inne i denne filen finner du blokken
/etc/apache2/sites-available/000-default.conf
Lagre og lukk filen. Start Apache på nytt for at endringene skal tre i kraft.
sudo systemctl start apache2 på nytt
Lag nå en .htaccess-fil i rotkatalogen på nettet.
Legg til denne linjen øverst i den nye filen for å aktivere overskriving.
/var/www/html/.htaccess
Omskriv motor på
Lagre filen og avslutt.
Du har nå en live .htaccess-fil som du kan bruke til å administrere nettapplikasjonens rutingsregler. I neste trinn vil vi lage eksempler på nettstedsfiler som vi vil bruke for å demonstrere reglene for omskriving.
Her setter vi opp en grunnleggende URL-omskriving som konverterer URL-er til faktiske kodebaner. Spesielt vil vi gi brukere tilgang. http://din_server_ip /om
La oss starte med å lage en fil kalt about.html i webrotkatalogen.
Sudo nano /var/www/html/about.html
Kopier følgende HTML-kode til en fil, og lagre og lukk den.
/var/www/html/about.html
Du kan få tilgang til http://din_server_ip/about.html, men vær oppmerksom på at hvis du prøver å få tilgang til http://din_server_ip/about, vil du se en feilmelding 404 ikke funnet. Men for at brukere skal få tilgang til siden ved å bruke om i stedet for å omskrive reglene, vil denne funksjonaliteten tillate.
RewriteRules følger følgende format:
Generell struktur for RewriteRule
RewriteRule-mønstererstatning
Åpne .htaccess-filen.
sudo nano /var/www/html/.htaccess
Etter den første linjen legger du til en RewriteRule merket med rødt, og lagrer filen.
/var/www/html/.htaccess
RewriteEngine på RewriteRule ^about$ about.html
I dette tilfellet er ^about$ malen, about.html er erstatningen og er flagget. Vårt eksempel bruker flere tegn med spesiell betydning:
Nå skal du kunne få tilgang til http://din_server_ip/about i nettleseren din. Faktisk, med regelen vist ovenfor, vil følgende nettadresser peke til about.html:
Nedenfor vil ikke være:
Du har nå en live .htaccess-fil med en enkel regel som du kan endre og utvide for å passe dine behov. I de følgende avsnittene vil vi vise ytterligere to eksempler på de mest brukte direktivene.
Webapplikasjoner bruker ofte spørrestrenger, som legges til URL-en ved å bruke et spørsmålstegn (?) etter adressen. Individuelle parametere er atskilt med et og-tegnet (&). Spørrestrenger kan brukes til å sende tilleggsdata mellom individuelle applikasjonssider.
For eksempel kan søkeresultatsider skrevet i PHP bruke en URL som http://example.ru/results.php?item=shirt&author=andreyex . I dette eksemplet passerer to ekstra parametere det imaginære result.php av applikasjonsskriptet: element med verdien skjorte og forfatter med verdien andreyex . Applikasjonen kan bruke søkestrenginformasjonen til å bygge den riktige siden for den besøkende.
Apache-omskrivingsregler brukes ofte for å forenkle slike lange og skjemmende lenker som ovenfor i vennlige nettadresser, som er lettere å skrive og tolke visuelt. I dette eksemplet ønsker vi å forenkle koblingen ovenfor for å lage http://example.ru/shirt/andreyex . skjorte og verdiene til forfatter- og andreyex-parameterne til samme adresse, men uten søkestrengen og skriptnavnet.
Her er en regel for å implementere dette:
Enkelt eksempel
RewriteRule ^shirt/andreyex$ results.php?item=shirt&author=andreyex
shirt/andreyex samsvarte eksplisitt i den forespurte adressen og Apache ble bedt om å kjøre results.php?item=shirt&author=andreyex i stedet.
flagg er ofte brukt i omskrivingsregler[. De ber Apache legge til eventuelle ekstra spørringsstrenger til den serverte URL-en. Uten dette vil den ekstra søkestrengen bli forkastet. http://example.ru/shirt/andreyex?page=2 results.php?item=shirt&author=andreyex&page=2
Mens denne metoden oppnår ønsket effekt, er både elementnavnet og forfatteren hardkodet inn i reglene. Dette betyr at regelen ikke vil fungere for andre gjenstander som bukser eller forfatter som destroyer.
For å gjøre regelen mer generell kan vi bruke regulære uttrykk for å matche deler av den opprinnelige adressen og bruke disse delene i erstatningsskjemaet. Den endrede regelen vil se slik ut:
Enkelt eksempel
RewriteRule ^(+)/(andreyex|destroyer|høst|vår) results.php?item=$1&author=$2
Det første regulære uttrykket i gruppen i parentes samsvarer med en streng som inneholder alfanumeriske tegn og tall, som skjorte eller bukser, og lagrer det matchede fragmentet som variabelen $1 . Den andre gruppen med uttrykk i parentes samsvarer nøyaktig med andreyex , destroyer , fall eller spring , og lagrer også det matchede fragmentet som $2 .
De matchede utdragene er da i den resulterende URL-en til element- og forfattervariablene i stedet for den hardkodede skjorten og andreyex vi brukte før.
Ovennevnte vil for eksempel konvertere http://example.ru/pants/andreyex til http://example.ru/results.php?item=pants&author=andreyex . Dette eksemplet er også for fremtiden, slik at flere elementer og forfatter kan skrives om på riktig måte ved hjelp av en enkelt regel.
Omskrivingsreglene blir ikke nødvendigvis alltid evaluert etter hverandre uten noen begrensninger. RewriteCond-direktivet lar oss legge til betingelser til våre omskrivingsregler for å kontrollere når reglene behandles. RewriteConds følger følgende format:
Generell struktur for RewriteCond
RewriteCond TestString Condition
Hvis RewriteCond er sant, vil RewriteRule umiddelbart etter bli vurdert. Hvis det ikke er det, vil regelen falle bort. Flere RewriteConds kan brukes etter hverandre, og med standardoppførselen må de alle evalueres til sanne og i neste regel å vurdere.
Som et eksempel, la oss si at du ønsker å omdirigere alle forespørsler om ikke-eksisterende filer og kataloger på nettstedet ditt tilbake til hovedsiden i stedet for å vise standard feilside. 404 ikke funnet. Dette kan oppnås med følgende regelbetingelser:
Omdiriger alle forespørsler om ikke-eksisterende filer og kataloger til hovedsiden
RewriteCond %(REQUEST_FILENAME) !-f RewriteCond %(REQUEST_FILENAME) !-d RewriteRule . /
Med tanke på ovenstående:
RewriteRule på siste linje vil kun tre i kraft for forespørsler om ikke-eksisterende filer og kataloger. Selve RewriteRule er veldig enkel og omdirigerer hver forespørsel til /roten til nettstedet.
mod_rewrite er en nyttig Apache-modul som kan brukes effektivt for å gi lesbare nettadresser for mennesker. I denne leksjonen lærte du hvordan du bruker RewriteRule-direktivet til å omdirigere URL-er, inkludert fra en spørringsstreng. Du har også lært om URL-omadressering ved å bruke RewriteCond-direktivet.
Tenk tilbake på ditt siste besøk i en nettbutikk. Når du fant det riktige produktet, så du sannsynligvis noe sånt som denne nettadressen:
Dette er ikke fordi utviklerne av denne siden brukte mye tid på å sette opp separate kataloger for ulike produktkategorier, men takket være en hendig modul kalt mod_rewrite. Denne modulen lar deg lage tilpassede og forenklede URL-er. URL-en ser faktisk omtrent slik ut:
http://www.buy-online.com/gp/itemB004RYVI0Q/ref=as_li_ss_tl?
Denne opplæringen dekker aktivering av denne modulen, opprettelse og bruk av en .htaccess-side og oppsett av URL-omskriving.
Du må også installere apache først. For å raskt installere denne webserveren på Ubuntu, bruk kommandoen:
sudo apt-get installer apache2
Først må du aktivere mod_rewrite, det er veldig enkelt:
sudo a2enmod omskrive
Denne kommandoen vil aktivere modulen, eller vise meldingen "Module omskriving allerede aktivert" hvis modulen allerede er aktivert.
Når modulen er aktivert, kan du sette opp koblingsomskriving ved å lage en .htaccess-fil i nettstedskatalogen.
.htaccess-filen er en måte å finjustere nettstedet uten å måtte endre serverkonfigurasjonsfiler. Prikken som begynner filnavnet betyr at filen er skjult.
I tillegg er plasseringen av .htaccess-filen viktig, siden innstillingene til denne filen vil påvirke alle filer og underkataloger til katalogen den ligger i.
Du kan opprette en .htaccess-fil ved hjelp av et tekstredigeringsprogram, og deretter laste den opp til nettstedet ved hjelp av en ftp-klient.
Merk: filen må hete nøyaktig .htaccess; Filnavnet må ikke inneholde flere utvidelser.
Alternativt kan du opprette en .htaccess-fil gjennom terminalen ved å bruke denne kommandoen, og erstatte example.com med nettstedets domenenavn.
Åpne konfigurasjonsfilen for å la .htaccess-filen overstyre standard nettstedinnstillinger.
Merk: Dette vil kreve utvidede sudo-privilegier.
sudo nano /etc/apache2/sites-available/default
I denne filen finner du følgende seksjon og endre verdien på AllowOverride-linjen (erstatt Ingen med alle). Som et resultat vil delen se slik ut:
Alternativindekser FollowSymLinks MultiViews
Tillat Override alle
bestille tillate, nekte
tillate fra alle
Etter å ha lagret endringene og lukket filen, start apache-serveren på nytt. .htacess-filene er nå tilgjengelige for alle nettsteder på serveren.
sudo-tjenesten apache2 omstart
Nå er du klar til å omskrive nettstedets URL-er.
Hele URL-omskrivingsoperasjonen foregår i .htaccess-filen. Generelt følger alle URL-omskrivingskommandoer det samme mønsteret:
RewriteRule Pattern Substitution
Alternativer brukt i denne kommandoen:
Dette er det enkleste eksemplet på URL-omskriving: en besøkende skriver inn en URL i nettleseren, men blir omdirigert til en annen. Følg instruksjonene i denne delen for å konfigurere denne virkemåten.
For å komme i gang, lag to nettsider; for eksempel handler den første om epler (apples.html) og den andre om appelsiner (appelsiner.html).
Kopier denne koden:
Lag deretter en side til (i dette tilfellet appelsinsiden). For å gjøre dette, erstatt bare epler i denne kodeblokken med appelsiner.
Åpne deretter .htaccess-filen:
sudo nano /var/www/example.com/.htaccess
Skriv inn følgende URL-omskrivingskommandoer i den:
Omskriv motor på
RewriteRule ^oranges.html$ apples.html
Lagre og lukk filen.
Besøk deretter /oranges.html-siden, den vil inneholde informasjonen til /apples.html-siden.
La oss se nærmere på kommandoen ovenfor:
Sjekk url:
http://example.com/results.php?products=apple
Det vil være mye klarere gjengitt som:
http://example.com/products/apple
For å gjøre dette, legg til følgende linjer i .htaccess:
Omskriv motor på
RewriteRule ^products/(+)/?$results.php?products=$1
Disse linjene består av følgende alternativer:
Denne funksjonen er uunnværlig hvis nettadressene er for lange eller komplekse.
Som et eksempel, ta følgende URL:
http://example.com/results.php?products=produce&type=fruit&species=apple
http://example.com/produce/fruit/eple
For å gjøre dette, legg til følgende linjer i .htaccess (forresten, .htaccess kan inneholde et ubegrenset antall slike seksjoner):
Omskriv motor på
RewriteRule ^(kjøtt|produser|meieri)/([^/.]+)/([^/.]+)$ results.php?products=$1&type=$2&species=$3
La oss se nærmere på denne koden:
Fortsettelsen av artikkelen finner du.
Tags: ,Denne veiledningen vil hjelpe deg med å sette opp URL-omskriving på Apache2 ved å bruke mod_rewrite-modulen. Dette verktøyet lar deg omskrive URL-er og lage rene lenker ved å konvertere komplekse baner til klare og lesbare lenker.
Apache kan installeres ved å bruke apt-get-pakkebehandlingen.
Først må du oppdatere pakkeindeksen:
sudo apt-get oppdatering
Apache er en populær modulær webserver (det vil si at den lar deg tilpasse funksjoner ved å aktivere og deaktivere moduler). For å installere Apache 2, skriv inn:
sudo apt-get installer apache2
Apache-serveren ble installert.
Nå må vi fokusere på modulene.
For å aktivere mod_rewrite, skriv inn:
sudo a2enmod omskrive
Kommandoen vil aktivere modulen og varsle deg om at modulen kjører. For å oppdatere webserverinnstillingene, start den på nytt:
sudo-tjenesten apache2 omstart
Nå må vi skrive .htaccess-filen som skal administrere omskrivingen.
.htaccess-filen definerer individuelle Apache-direktiver for hvert enkelt domene.
Merk: På Linux begynner skjulte filnavn med en prikk.
Først må du aktivere støtte for .htaccess-filer. For å gjøre dette, rediger AllowOverride-direktivet i Apache-konfigurasjonsfilen. Åpen fil:
sudo nano /etc/apache2/sites-enabled/000-default.conf
Finn en blokk
etc/apache2/sites-available/default
Alternativindekser FollowSymLinks MultiViews
Tillat Override alle
bestille tillate, nekte
tillate fra alle
Nå skal webserverens konfigurasjonsfil se slik ut:
/etc/apache2/sites-available/default
. . .
. . .
For å oppdatere innstillingene, start Apache på nytt.
sudo-tjenesten apache2 omstart
Opprett en .htaccess-fil:
Legg til denne linjen i begynnelsen av den nye filen for å aktivere RewriteEngine:
Omskriv motor på
Lagre og lukk filen. Dette vil tillate Apache å behandle reglene for omskriving.
Andre brukere skal kun ha lesetilgang til .htaccess. Endre filtillatelser:
sudo chmod 644 /var/www/html/.htaccess
Denne delen viser deg hvordan du setter opp grunnleggende URL-omskriving. Linken example.com/about brukes som eksempel.
Opprett en about.html-fil:
sudo nano /var/www/html/about.html
Kopier følgende kode og plasser den i en fil:
Merk at bare about.html er tilgjengelig. Hvis du skriver inn lenken server_ip_address /about, vil du få en 404 Not Found-feil. Lag en omskrivingsregel for å fikse dette.
Åpne .htaccess-filen:
sudo nano /var/www/html/.htaccess
Legg til følgende linje:
RewriteRule ^about$ about.html
Filen inneholder nå følgende innstillinger:
Omskriv motor på
RewriteRule ^about$ about.html
Nettleseren skal nå kunne betjene siden example.com/about.
Ved å bruke denne regelen som eksempel kan vi vurdere den generelle syntaksen for omskriving.
I henhold til denne regelen kan siden nås via følgende lenker:
example.com/about
example.com/About
example.com/about.html
example.com/about/
eksempel.com/kontakt
Så nå vet du det grunnleggende om å skrive omskrivingsregler. La oss se på ytterligere to eksempler.
Merk: For testing kan du lage et par ekstra filer.
RewriteRule-regler har følgende format:
RewriteRule-mønstererstatning
Apper bruker ofte spørrestrenger. Disse strengene er i URL-en, og begynner med et spørsmålstegn (?) og slutter med et og-tegnet (&). Når du behandler omskrivingsregler, ignorerer Apache disse to tegnene. For eksempel kan nettadressen til en søkeresultatside skrevet i PHP se slik ut:
http://example.com/results.php?item=shirt&season=summer
Selvfølgelig vil brukerne være mye mer komfortable hvis lenken er ren:
http://example.com/skjorte/sommer
Dette kan oppnås på to måter: ved enkel substitusjon eller gruppering av parametere.
Lag en regel som gjør en enkel erstatning for å gjøre lenken ren:
RewriteRule ^shirt/summer$ results.php?item=shirt&season=summer
Denne regelen vil bruke skjorte/sommer i stedet for results.php?item=shirt&season=summer.
I noen situasjoner må du optimalisere søkestrengen (for eksempel for å inkludere alle årstider). Til dette trenger du:
Dette vil resultere i følgende regel:
RewriteRule ^skjorte/(sommer|vinter|høst|vår) results.php?item=shirt&season=$1
Denne regelen legger til et nytt segment i URL-en.
For at brukeren skal åpne den rene URL-en til en hvilken som helst del av nettstedet (ikke bare / skjorte), må du:
RewriteRule ^(+)/(sommer|vinter|høst|vår) results.php?item=$1&season=$2
http://example.com/results.php?item=pants&season=summer
http://example.com/bukser/sommer
Dette vil tillate deg å eliminere en rekke potensielle problemer. Prøv å konvertere:
http://example.com/bukser/sommer?page=2
http://example.com/results.php?item=pants&season=summer&page=2
Med gjeldende innstillinger vil du ikke kunne navigere til page=2. Dette kan fikses med QSA-flagget, som lar spørringsstrenger kombineres. Rediger regelen som følger:
RewriteRule ^(+)/(sommer|vinter|høst|vår) results.php?item=$1&season=$2
La oss nå se nærmere på RewriteCond-direktivet. RewriteCond har følgende format:
RewriteCond TestString Condition
Hvis RewriteCond er sann, vil Apache behandle følgende RewriteRule.
Du så tidligere at hvis den forespurte siden ikke eksisterer, returnerer Apache en 404 Not Found-feilside. Imidlertid kan Apache i stedet omdirigere alle slike forespørsler til hjemmesiden. Legg til følgende betingelse for å sikre at den forespurte filen eksisterer:
RewriteCond %(REQUEST_FILENAME) !-f
RewriteRule ^admin/(.*)$ /admin/home
Vurder regelen ovenfor i deler:
Du kan også angi et ErrorDocument som alle forespørsler om ikke-eksisterende sider skal sendes til. Opprett en ErrorDocument-regel og omdiriger alle 404-feil til error.html-siden:
ErrorDocument 404 /error.html
RewriteCond lar deg begrense tilgangen til et nettsted etter IP-adresse.
For eksempel vil denne regelen blokkere all trafikk unntatt 12.34.56.789:
RewriteCond %(REMOTE_ADDR) !^(12\.34\.56\.789)$
RewriteRule(.*) -
kayabaparts.ru - Entré, kjøkken, stue. Hage. Stoler. Soverom