Preusmeri .htaccess: preusmeri na drugo domeno in preusmeri na drugo stran

  1. Preusmeri .htaccess: trajna preusmeritev, 301
  2. Kako nastaviti preusmeritev na www (ali brez www)
  3. Kako ustvariti .htaccess
  4. Datoteka .htaccess ne deluje
  5. Ali obstaja kakšen analog .htaccess v nginx?
  6. Založnik
  7. x64 (alias)

Dobra nedelja!

Zelo pogosto v forumih lahko najdete vprašanja o .htaccess - konfiguracijski datoteki Apache spletnega strežnika. Glavna ovira je v tem, da razvoj ni imel zadostne konfiguracije za končnega uporabnika (distribucija ne vključuje ukazne lupine za vizualne namestitve, ki uporabljajo potrditvena polja, spustne sezname itd.), Vendar se skrbniki strežnika obvladajo s to nalogo izjemno, saj so zadovoljni z "mano". (od ekipe Linux - man - hitra vadnica razvijalcev ali v tem primeru od strokovnjakov do strokovnjakov).

V večini primerov so potrebne preproste manipulacije: brezpogojno preusmeritev na drugo spletno mesto ali preusmeritev z enega mesta na drugo (recimo, ko se je spremenila URL oddelka). In vsaka oseba začenja verjeti, da nikjer ni nobenega problema in je celo neuporabno iskati rešitev na internetu in iskati forum. Poglejmo, kaj te težave res niso.

Poglejmo, kaj te težave res niso

Preusmeri .htaccess: trajna preusmeritev, 301

Ta stvar ima drugačna imena. Neponyatki lahko povzročijo morda to številko - zakaj je 301? Bistvo je v samem protokolu HTTP, ki se odziva na zahteve odjemalcev s posebno kodo stanja. Koda 404 Not Found je znana skoraj vsem. Koda 200 OK je skoraj neznana, vendar to pomeni, da je vse v redu in da bo dokument prikazan v brskalniku. Vendar koda 301 Moved Permanently pomeni, da se je dokument končno preselil na nov naslov. To se pogosto imenuje preusmeritev, čeprav je skupna skupina odgovorov označena kot - 3xx: Preusmeritev .

Apache ima več možnosti za preusmeritve. Modul mod_rewrite zagotavlja odličen mehanizem za delo s preusmeritvami in ga bom v prihodnosti uporabil v primerih. Modul mod_alias ima tudi smernice za preusmeritve z določenega naslova ali naslova, ki ustreza regularnemu izrazu:
Preusmeri trajno / http://newsite.ru/
RedirectMatch permanent. * Http: //newsite.ru/
Toda mod_rewrite ima dodatne možnosti za preusmeritev, zato ga je najbolje uporabiti (IMHO).

Na splošno, za brezpogojno zunanjo (recimo uporabnikovo) preusmeritev, v kateri brskalnik samodejno preusmeri na drugo stran, ponavadi neopazno za uporabnika (spremembe v naslovni vrstici), lahko to kodo vstavite v .htaccess:
RewriteEngine On
RewriteRule. * Http: //newsite.ru/ [L, R = trajno]
Tu prva linija vključuje mehanizem mod_rewrite modula, ki mu je dovoljeno karkoli narediti z naslovi. Pokličimo to preusmeritev URL-jev po pogojih na poti. Druga vrstica neposredno opredeljuje pravilo za konverzijo, v zgornjem primeru pa bodo vse zahteve preusmerjene na http://newsite.ru/. Oznake so postavljene v oglatih oklepajih: L - zadnje (zadnje) pravilo, R - vrsta preusmeritve (Preusmeritev), označena z R = koda, pri čemer je koda abecedna ali številčna oznaka (stalna ali 302).

Pravzaprav je mod_rewrite zelo uporabna stvar, saj zaradi tega mnogi motorji aktivno uporabljajo tako imenovani CNC (Human URL Understandable). Če tega pojma ne poznate, vam bom s primerom pojasnil. Članek o prostih motorjev za spletno mesto ima naslov: https://a-panov.ru/2014/11/free-cms/

Če pogledamo ta URL, je jasno, da je bil članek objavljen novembra 2014. Z odstranitvijo naslova s ​​poševno poševnico - https://a-panov.ru/2014/11/ - bomo prejeli seznam vseh objav za november. Običajni naslovi, vnesite:

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

brez posebne prijaznosti. Videti tak naslov, ne moreš reči o strani, na kateri vodi, ničesar.

Ta metoda je dobra, če vam ni vseeno, na katero stran novega spletnega mesta želite povezati. Če pa ste se premaknili na drugo domeno, je priporočljivo preusmeriti vse zahteve, medtem ko ohranite naslove. To naredite tako:
RewriteRule ^. * $ Http://newsite.ru/$0 [QSA, L, R = trajno]
Nova zastavica QSA bo shranila tudi parametre, ki jih lahko najdete na naslovih za vprašajem. V že znanem primeru:

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

če postavim kodo v .htaccess zgoraj, bo preusmeritev na naslov http://newsite.ru/?p=389, ki brez te zastave ne bi obstajala.

V nadaljevanju bom izpustil direktivo o vključitvi v preoblikovanje:
RewriteEngine On
Zapomnite si: če uporabljate mehanizem mod_rewrite, potem se morajo vsi pogoji / pretvorbe izvajati po tej direktivi. Če želite onemogočiti naslednjo vrstico, uporabite:
RewriteEngine Off
zato za vsako pravilo ni treba nenehno "vklopiti" transformacij - začne se samodejno, takoj po prvi direktivi.

Kako nastaviti preusmeritev na www (ali brez www)

Takšne preusmeritve so potrebne za primere, ko je stran na voljo na možnostih nsite.ru in www.nsite.ru, v tem primeru iskalniki menijo, da so podvojeni in lahko bodisi izberejo eno od možnosti kot glavno ogledalo , ali pa bodo pri iskanju na voljo dve možnosti. Na splošno je to negativni dejavnik pri razvrščanju strani.

Možnost je lažja za eno domeno. Preusmeritev se izvaja s poddomene www.site.ru na site.ru:
RewriteCond% {HTTP_HOST} ^ www stran
RewriteRule. * Http: /nsite.ru/$0 [QSA, L, R = trajno]
Tu se je pojavila nova direktiva RewriteCond , ki določa pogoje, pod katerimi naj preusmeritve delujejo - pravila RewriteRule . Pogoj, v tem primeru ime domene, ki ustreza www.nsite.ru (v regularnih izrazih, simbol pike pomeni "vsak znak", zato je priporočljivo, da ga zaščitite z poševnico nazaj).

Povratna preusmeritev je tudi zelo preprosta:
RewriteCond% {HTTP_HOST} ^ nsite
RewriteRule. * Http://www.nsite.ru/$0 [QSA, L, R = trajno]
Obe možnosti delujeta, vendar imata majhen minus - za vsako novo konfiguracijo je potrebno domeno nsite.ru zamenjati z lastno. Ali je mogoče narediti edinstveno možnost? Enostavno!

Preusmeri s katerega koli poddomene www:
RewriteCond% {HTTP_HOST} ^ www (. *) $
RewriteRule. * Http: //% 1 / $ 0 [QSA, L, R = trajno]

Preusmeritev na poddomeno z www:
RewriteCond% {HTTP_HOST}! ^ Www \ t
RewriteRule. * Http: //www.% {HTTP_HOST} / $ 0 [QSA, L, R = trajno]

% {HTTP_HOST} - trenutna domena

Kako ustvariti .htaccess

Pojavljajo se tudi takšna vprašanja. Problem je v tem, da standardni Explorer (aplikacija v operacijskem sistemu Windows, ki je odgovoren za grafični vmesnik) ne omogoča ustvarjanja datotek, ki se začnejo z piko (ustvarjanje datotek ali map z desnim klikom na namizje ali v oknu in izbiranje želenega dejanja iz seznama Ustvari ). Vendar pa obstaja izhod: odprite standardni zapisovalnik beležnic, v meniju izberite Datoteka → Shrani kot ... in kot ime shranjene datoteke določite .htaccess - potem bo ustvarjen.

Datoteka .htaccess ne deluje

Obstajajo primeri, ko direktive iz datoteke ne delujejo. To ponavadi povzroči dejstvo, da je podpora .htaccess onemogočena v konfiguraciji Apache, za katero je direktiva odgovorna:
AllowOverride none

To se običajno izvede za nekoliko povečanje hitrosti - v tem primeru spletni strežnik ne išče in razčleni .htaccess.

Možno je tudi, da se Apache ne uporablja na strežniku, na primer, IIS je glavni "gost" na gostovanju Windows. Za pojasnilo se obrnite na podporo vašega gostitelja.

Ali obstaja kakšen analog .htaccess v nginx?

Drugo pogosto vprašanje. V tem spletnem strežniku to ni mogoče. Vendar pa to ponavadi ni potrebno. Dejstvo je, da je nginx običajno nameščen kot frondend, to pomeni, da sprejema in obdeluje vse zahteve, ki jih opravi sam ali preusmeri na backend, ki ga lahko opravi Apache, ki ga je mogoče nadalje konfigurirati z uporabo .htaccess.

Založnik

ni na spletu 1 dan

x64 (alias)

Komentarji: 2834 Publikacije: 394 Registracija: 02-04-2009

Htaccess v nginx?
Neponyatki lahko povzročijo morda to številko - zakaj je 301?
Ru/?
Ru/?
Ru/?
Ali je mogoče narediti edinstveno možnost?
Htaccess v nginx?