Átirányítás .htaccess: átirányítás egy másik tartományba és átirányítás egy másik oldalra

  1. Átirányítás .htaccess: állandó átirányítás, 301
  2. Hogyan lehet átirányítást létrehozni a www (vagy www nélkül)
  3. .Htaccess létrehozása
  4. A .htaccess fájl nem működik
  5. Van-e analóg a .htaccess nginx-ben?
  6. Szerzők
  7. x64 (más néven andi)

Jó vasárnap!

A fórumokon gyakran találhat kérdéseket a .htaccess - az Apache webszerver konfigurációs fájljában. A fő botrány az, hogy a fejlesztés nem volt kényelmes a végfelhasználó számára (a terjesztés nem tartalmazza a jelölőnégyzeteket, a legördülő listákat stb. Használó vizuális installációk héját), de a szerveradminisztrátorok ezt a feladatot figyelemre méltóan kezelik, mivel a "mana" -nak elégedett. (a Linux csapatból - emberből - egy gyors bemutató a fejlesztőktől vagy ebben az esetben a szakemberektől a szakemberekig).

A legtöbb esetben egyszerű manipulációra van szükség: feltétel nélküli átirányítás egy másik oldalra, vagy átirányítás egyik helyről a másikra (mondjuk, amikor a szakasz URL-je megváltozott). És mindenki elkezdi azt hinni, hogy bárhol semmi gond nincs, és még nem is lehet megoldást keresni az interneten, és keresni a fórumot. Lássuk, mi ezek a problémák valójában nem.

Lássuk, mi ezek a problémák valójában nem

Átirányítás .htaccess: állandó átirányítás, 301

Ez a dolog más nevekkel rendelkezik. A Neponyatki talán ezt a számot okozhatja - miért van 301? A lényeg magában a HTTP protokollban rejlik, amely egy adott állapotkóddal válaszol az ügyfél kérésére. A 404 nem található kódot szinte mindenki ismeri. A 200 OK kód szinte ismeretlen, de azt jelenti, hogy minden rendben van, és a dokumentum megjelenik a böngészőben. A 301-es kód áthelyezése véglegesen azt jelenti, hogy a dokumentum végül új címre költözött. Ez az, amit gyakran átirányításnak neveznek, bár a teljes válaszkészlet - 3xx: Redirection .

Az Apache-nak számos lehetősége van az átirányításra. A mod_rewrite modul kiváló mechanizmust biztosít az átirányítások kezeléséhez, és a jövőben a példákban fogom használni. A mod_alias modulnak vannak irányelvei az átirányításokról egy adott címről vagy egy olyan címről, amely megfelel a rendszeres kifejezésnek:
Állandó átirányítás / http://newsite.ru/
Az átirányításMatch állandó. * Http://newsite.ru/
De a mod_rewrite-nek további lehetőségei vannak az átirányításra, így a legjobb, ha ezt használja (IMHO).

Általában egy feltétel nélküli külső (hívjuk a felhasználó) átirányítást, amelyben a böngésző automatikusan átirányítja egy másik oldalra, általában észrevétlenül a felhasználó számára (a címsor változásai), akkor a .htaccess-be:
RewriteEngine Be
RewriteRule. * Http://newsite.ru/ [L, R = állandó]
Itt az első sor tartalmazza a mod_rewrite modul mechanizmusát, amely bármit is tehet a címekkel. Hívjuk ezt az URL-konverziót a repülés körülményei között. A második sor közvetlenül meghatározza az átváltási szabályt, a fenti példában minden kérés átirányításra kerül a http://newsite.ru/ címre. A zászlók szögletes zárójelben vannak elhelyezve: L - last (Last) szabály, R - átirányítás típusa (átirányítás), R = kódként, ahol a kód egy alfabetikus vagy numerikus megjelölés (állandó vagy 302).

Tény, hogy a mod_rewrite nagyon hasznos dolog, mert ez az, hogy sok motor aktívan használja az úgynevezett CNC-t (Man-Friendly URL). Ha nem ismeri ezt a kifejezést, elmagyarázok egy példával. Cikk arról ingyenes motorok a helyszínen címe: https://a-panov.ru/2014/11/free-cms/

Ezt az URL-t nézve azonnal kiderül, hogy a cikket 2014 novemberében tették közzé. A cím törlésével - https://a-panov.ru/2014/11/ - kapunk egy listát a novemberi kiadványról. Normál címek, típus:

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

nincs különleges barátság. Egy ilyen címet látva nem mondhatod el az oldalról, amelyen ő vezet, semmi.

Ez a módszer jó, ha nem érdekli, hogy az új oldal melyik oldala kapcsolódik. Ha azonban egy másik tartományba költözött, ajánlatos az összes kérést átirányítani a címek fenntartása mellett. Ehhez használja a következő kódot:
RewriteRule ^. * $ Http://newsite.ru/$0 [QSA, L, R = állandó]
Az új QSA- jelző a kérdőjel után a címekben található paramétereket is elmenti. A már ismerős példában:

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

Ha a fenti kódot a .htaccess-be helyezem, akkor a http://newsite.ru/?p=389 címre lesz átirányítás, amely e jelzés nélkül nem létezik.

A továbbiakban kihagyom a transzformációs befogadásról szóló irányelvet:
RewriteEngine Be
Ne feledd: ha a mod_rewrite mechanizmust használod, akkor az összes feltétel / konverzió ezen irányelv után történik. A következő sor letiltásához használja:
RewriteEngine Off
ennek megfelelően minden szabály esetében nincs szükség folyamatos „bekapcsolásra” - az automatikusan megkezdődik, közvetlenül az első irányelv után.

Hogyan lehet átirányítást létrehozni a www (vagy www nélkül)

Az ilyen átirányítások olyan esetekben szükségesek, amikor a webhely elérhető az nsite.ru és a www.nsite.ru opciókban, ebben az esetben a keresőmotorok azokat ismétlődőnek tekintik, és választhatnak az alábbi lehetőségek közül: fő tükör , vagy a keresésben mindkét tartományban lesz lehetőség. Általában ez egy negatív tényező a webhely rangsorolásakor.

Egy domain számára könnyebb. Az átirányítás az aldomainből a www.site.ru és a site.ru oldalról történik:
RewriteCond% {HTTP_HOST} ^ www \ t
RewriteRule. * Http://nsite.ru/$0 [QSA, L, R = állandó]
Itt jelenik meg az új RewriteCond irányelv, amely meghatározza az átirányítások működésének feltételeit - a RewriteRule szabályokat. Ebben az esetben a www.nsite.ru nevű tartománynév (rendszeres kifejezésekben a pontszimbólum „bármilyen karaktert” jelent, ezért célszerű hátrafelé árnyékolni).

A fordított átirányítás is nagyon egyszerű:
RewriteCond% {HTTP_HOST} ^ nsite \ t
RewriteRule. * Http://www.nsite.ru/$0 [QSA, L, R = állandó]
Mindkét opció működik, de van egy kis mínuszuk - minden új konfigurációhoz ki kell cserélni a nsite.ru tartományt sajátoddal . Lehetséges-e egyedi lehetőség? Egyszerű!

Átirányítás bármely www aldomainből:
RewriteCond% {HTTP_HOST} ^ www (. *) $
RewriteRule. * Http: //% 1 / $ 0 [QSA, L, R = állandó]

Vezessen át egy aldomainre a www:
RewriteCond% {HTTP_HOST}! ^ Www \ t
RewriteRule. * Http: //www.% {HTTP_HOST} / $ 0 [QSA, L, R = állandó]

% {HTTP_HOST} - aktuális tartomány

.Htaccess létrehozása

Ilyen kérdések is felmerülnek. A probléma az, hogy a szabványos Explorer (a Windows rendszerű alkalmazás, amely a grafikus felületért felelős) nem teszi lehetővé, hogy egy ponttal kezdődő fájlokat hozzon létre (fájlok vagy mappák létrehozása az egér jobb gombjával az asztalon vagy egy ablakban, és a kívánt művelet kiválasztása a Lista listából). De van egy kiút: nyissa meg a szabványos Jegyzettömb-felvevőt, válassza ki a menüben a Fájl → Mentés másként ... lehetőséget, és adja meg a .htaccess-t a mentett fájl neveként - ezt követően létrejön.

A .htaccess fájl nem működik

Vannak esetek, amikor egy fájlból származó irányelvek nem működnek. Ezt általában az okozza, hogy az .htaccess támogatás le van tiltva az Apache konfigurációban, amelyért az irányelv felelős:
AllowOverride nincs

Ezt általában úgy hajtják végre, hogy a sebességet kissé növeljék - ebben az esetben a webszerver nem keres és nem elemzi .htaccess-t.

Az is lehetséges, hogy az Apache-ot nem használják a kiszolgálón, például az IIS a fő „vendég” a Windows tárhelyén. A tisztázás érdekében forduljon a hoster támogatásához.

Van-e analóg a .htaccess nginx-ben?

Egy másik meglehetősen gyakori kérdés. Ebben a webszerveren ez nem lehetséges. Ez azonban általában nem szükséges. Az a tény, hogy az nginx rendszerint frondendként van telepítve, azaz elfogadja és feldolgozza az összes olyan kérést, amelyet maga végez, vagy átirányít a backendre, amelyet az Apache végezhet, és amely tovább konfigurálható .htaccess használatával.

Szerzők

nem online 1 nap

x64 (más néven andi)

Megjegyzések: 2834 Kiadványok: 394 Regisztráció: 2009-04-02

Htaccess nginx-ben?
A Neponyatki talán ezt a számot okozhatja - miért van 301?
Ru/?
Ru/?
Ru/?
Lehetséges-e egyedi lehetőség?
Htaccess nginx-ben?