Omdirigere .htaccess: Omdirigere til et annet domene og viderekoble til en annen side

  1. Omdirigere .htaccess: permanent omdirigering, 301
  2. Slik setter du omdirigering til www (eller uten www)
  3. Hvordan lage .htaccess
  4. .Htaccess-filen virker ikke
  5. Er det noen analog av .htaccess i nginx?
  6. Forfattere
  7. x64 (aka andi)

God søndag!

Svært ofte i forumene kan du finne spørsmål om .htaccess - Apache webserver konfigurasjonsfilen. Hovedbruddet er at utviklingen ikke har til hensikt å oppnå en praktisk konfigurasjon for sluttbrukeren (distribusjonen inkluderer ikke et skall for visuelle installasjoner ved hjelp av ruter, rullegardinlister, etc.), men serveradministratorer takler denne oppgaven bemerkelsesverdig, er tilfreds med "mana" (fra Linux-teamet - mann - en rask opplæring fra utviklere, eller i dette tilfellet fra fagfolk til fagfolk).

I de fleste tilfeller er det nødvendig med enkle manipulasjoner: ubetinget omdirigering til et annet nettsted, eller omdirigering fra ett sted til et annet (si når nettadressen til seksjonen er endret). Og hver person begynner å tro at det er absolutt ikke noe problem hvor som helst, og det er enda ubrukelig å søke etter en løsning på Internett og søke i forumet. La oss se hva disse problemene egentlig ikke er.

La oss se hva disse problemene egentlig ikke er

Omdirigere .htaccess: permanent omdirigering, 301

Denne tingen har forskjellige navn. Neponyatki kan forårsake kanskje det nummeret - hvorfor er 301? Essensen ligger i selve HTTP-protokollen, som reagerer på klientforespørsler med en bestemt statuskode. 404 Not Found- koden er kjent for nesten alle. 200 OK- koden er nesten ukjent, men det betyr at alt er i orden, og dokumentet vil bli vist i nettleseren. Men koden 301 Flyttet permanent betyr at dokumentet endelig flyttet til en ny adresse. Dette kalles ofte omadressering, selv om det totale responsbassenget er betegnet som - 3xx: Omdirigering .

Apache har flere alternativer for viderekoblinger. Mod_rewrite-modulen gir en utmerket mekanisme for å arbeide med omdirigeringer, og i fremtiden vil jeg bruke den i eksemplene. Mod_alias-modulen har også direktiver for omadresser fra en bestemt adresse eller fra en adresse som samsvarer med det vanlige uttrykket:
Viderekobling permanent / http://newsite.ru/
RedirectMatch permanent. * Http://newsite.ru/
Men mod_rewrite har flere alternativer for omdirigering, så det er best å bruke (IMHO) det.

Generelt, for en ubetinget ekstern (la oss kalle det bruker) omdirigering, der nettleseren automatisk omdirigerer til en annen side, vanligvis umerkelig for brukeren (adresselinjen endres), kan du sette slik kode i .htaccess:
Skriv om på nytt
RewriteRule. * Http://newsite.ru/ [L, R = permanent]
Her inkluderer den første linjen mekanismen til mod_rewrite- modulen, som har lov til å gjøre noe med adressene. La oss kalle denne URL-konverteringen av forholdene i fly. Den andre linjen definerer direkte regelen for konvertering, i eksemplet ovenfor blir alle forespørsler omdirigert til http://newsite.ru/. Flagg er plassert i firkantede parenteser: L - siste (Siste) regel, R-omdirigeringstype (Omdirigering), angitt som R = kode, hvor kode er en alfabetisk eller numerisk betegnelse (permanent eller 302).

Faktisk er mod_rewrite en veldig nyttig ting, fordi det er på grunn av dette at mange motorer aktivt bruker den såkalte CNC (Human URL Understandable). Hvis du ikke er kjent med dette begrepet, vil jeg forklare med et eksempel. Artikkel om gratis motorer til nettstedet har adressen: https://a-panov.ru/2014/11/free-cms/

Når du ser på denne nettadressen, er det umiddelbart klart at artikkelen ble publisert i november 2014. Ved å fjerne tittelen med et skråstrekk - https://a-panov.ru/2014/11/ - vil vi motta en liste over all publikasjon for november. Vanlige adresser, type:

https://a-panov.ru/?p=389

ingen spesiell vennlighet. Når du ser en slik adresse, kan du ikke si om siden han leder, absolutt ingenting.

Denne metoden er bra når du ikke bryr deg hvilken side av det nye nettstedet som skal kobles til. Men hvis du flyttet til et annet domene, anbefales det å omdirigere alle forespørsler samtidig som adresser opprettholdes. For å gjøre dette, bruk følgende kode:
RewriteRule ^. * $ Http://newsite.ru/$0 [QSA, L, R = permanent]
Det nye QSA- flagget lagrer også parametrene som finnes i adressene etter spørsmålstegnet. I det allerede kjente eksempelet:

https://a-panov.ru/?p=389

Hvis jeg plasserer koden i .htaccess ovenfor, vil det bli en omadressering til adressen http://newsite.ru/?p=389 som uten dette flagget ikke ville eksistere.

I det følgende vil jeg utelate direktivet om transformasjonsintegrasjon:
Skriv om på nytt
Bare husk: Hvis du bruker mod_rewrite-mekanismen, må alle forhold / konverteringer utføres etter dette direktivet. For å deaktivere følgende linje brukes:
Omskriv Avbryt
For hver regel er det derfor ikke nødvendig å kontinuerlig "slå på" transformasjoner - det begynner å bli gjort automatisk, umiddelbart etter det første direktivet.

Slik setter du omdirigering til www (eller uten www)

Slike omdirigeringer kreves for tilfeller der nettstedet er tilgjengelig på alternativene nsite.ru og www.nsite.ru, i dette tilfellet vurderer søkemotorene dem duplikater og kan enten velge et av alternativene som hovedspeilet , eller i søket vil det være alternativer fra begge domener. Generelt er dette en negativ faktor når man rangerer et nettsted.

Alternativet lettere for ett domene. Omadressering utføres fra underdomenet www.site.ru til site.ru:
RewriteCond% {HTTP_HOST} ^ www \ .nsite \ .ru $
RewriteRule. * Http://nsite.ru/$0 [QSA, L, R = permanent]
Dette er hvor det nye RewriteCond- direktivet ble vist, som angir betingelsen for omadressering skal fungere - RewriteRule- reglene. Tilstanden, i dette tilfellet, domenenavnet som tilsvarer www.nsite.ru (i regulære uttrykk betyr prikksymbolet "et hvilket som helst tegn", så det er tilrådelig å skjerme det med tilbakeslag).

Omvendt omdirigering er også veldig enkelt:
RewriteCond% {HTTP_HOST} ^ nsite \ .ru $
RewriteRule. * Http://www.nsite.ru/$0 [QSA, L, R = permanent]
Begge alternativene fungerer, men de har en liten minus - for hver ny config er det nødvendig å erstatte nsite.ru domenet med ditt eget. Er det mulig å lage et unikt alternativ? Easy!

Omdirigere fra et hvilket som helst www underdomen:
RewriteCond% {HTTP_HOST} ^ www \. (. *) $
RewriteRule. * Http: //% 1 / $ 0 [QSA, L, R = permanent]

Viderekobling til et underdomene med www:
RewriteCond% {HTTP_HOST}! ^ Www \.
RewriteRule. * Http: //www.% {HTTP_HOST} / $ 0 [QSA, L, R = permanent]

% {HTTP_HOST} - nåværende domene

Hvordan lage .htaccess

Slike spørsmål oppstår også. Problemet er at standard Explorer (programmet i Windows, som er ansvarlig for det grafiske grensesnittet), ikke lar deg lage filer som starter med en prikk (lage filer eller mapper ved å høyreklikke på skrivebordet eller i et vindu og velge ønsket handling fra Opprett- listen). Men det er en vei ut: Åpne standard Notisblokkopptaker, velg Arkiv → Lagre som ... i menyen, og spesifiser .htaccess som navnet på den lagrede filen - etter at den blir opprettet.

.Htaccess-filen virker ikke

Det er tilfeller når direktiver fra en fil ikke fungerer. Dette skyldes vanligvis at støtten til .htaccess er deaktivert i Apache-konfigurasjonen, for hvilken direktivet er ansvarlig:
Tillat Override None

Dette gjøres vanligvis for å øke hastigheten noe - i dette tilfellet søker og ser ikke webserveren på .htaccess.

Det er også mulig at Apache ikke brukes på serveren, for eksempel er IIS den viktigste "gjest" på Windows-hosting. For avklaring, ta kontakt med vertsmaskinen din.

Er det noen analog av .htaccess i nginx?

Et annet ganske vanlig spørsmål. I denne webserveren er dette ikke mulig. Dette er imidlertid vanligvis ikke nødvendig. Faktum er at nginx vanligvis er installert som en frondend, det vil si at den aksepterer og behandler alle forespørsler som den enten utfører selv eller omdirigerer til backend, som kan utføres av Apache, som kan konfigureres ytterligere ved hjelp av .htaccess.

Forfattere

ikke online 1 dag

x64 (aka andi)

Kommentarer: 2834 Publikasjoner: 394 Registrering: 02-04-2009