Preusmjeri .htaccess: preusmjerite na drugu domenu i preusmjerite na drugu stranicu
- Preusmjeri .htaccess: trajno preusmjeravanje, 301
- Kako postaviti preusmjeravanje na www (ili bez www)
- Kako stvoriti .htaccess
- Datoteka .htaccess ne radi
- Postoji li analogni .htaccess u nginx-u?
- autori
- x64 (zv. andi)
Dobra nedjelja!
Vrlo često u forumima možete naći pitanja o .htaccess - konfiguracijskoj datoteci Apache web poslužitelja. Glavni kamen spoticanja je u tome što razvoj nije imao zadatak prikladne konfiguracije za krajnjeg korisnika (distribucija ne uključuje ljusku za vizualne instalacije pomoću potvrdnih okvira, padajućih popisa, itd.), Ali administratori poslužitelja se izuzetno dobro nose s tim zadatkom, zadovoljavajući se s "manom" (iz Linux tima - čovjek - brzi vodič od programera ili u ovom slučaju od profesionalaca do profesionalaca).
U većini slučajeva potrebne su jednostavne manipulacije: bezuvjetno preusmjeravanje na drugo mjesto ili preusmjeravanje s jednog mjesta na drugo (recimo, kada se URL odjeljka promijenio). I svaka osoba počinje vjerovati da nikamo nema problema, a čak je i beskorisno tražiti rješenje na internetu i pretraživati forum. Da vidimo što ti problemi zapravo nisu.
Preusmjeri .htaccess: trajno preusmjeravanje, 301
Ova stvar ima različita imena. Neponyatki mogu izazvati možda taj broj - zašto je 301? Bit leži u samom HTTP protokolu, koji odgovara na zahtjeve klijenata s određenim kodom statusa. Kod 404 Not Found poznat je gotovo svima. Kôd 200 OK je gotovo nepoznat, ali to znači da je sve u redu i dokument će biti prikazan u pregledniku. Ali kod 301 Moved Permanently znači da je dokument konačno premješten na novu adresu. To je ono što se često naziva preusmjeravanje, iako je ukupna količina odgovora označena kao - 3xx: Preusmjeravanje .
Apache ima nekoliko opcija za preusmjeravanja. Mod_rewrite pruža izvrstan mehanizam za rad s preusmjeravanjima, a ubuduće ću ga koristiti u primjerima. Mod_alias modul također ima smjernice za preusmjeravanja s određene adrese ili s adrese koja odgovara regularnom izrazu:
Preusmjeri trajno / http://newsite.ru/
RedirectMatch permanent. * Http: //newsite.ru/
No, mod_rewrite ima dodatne opcije za preusmjeravanje, tako da je najbolje koristiti ga (IMHO).
Općenito, za bezuvjetno vanjsko preusmjeravanje (nazovimo ga korisnik), u kojem preglednik automatski preusmjerava na drugu stranicu, obično neprimjetno za korisnika (promjene adresne trake), možete staviti takav kod u .htaccess:
RewriteEngine On
RewriteRule. * Http: //newsite.ru/ [L, R = trajno]
Ovdje prvi red uključuje mehanizam mod_rewrite modula, kojem je dopušteno učiniti bilo što s adresama. Nazovimo ovu pretvorbu URL-a po uvjetima u letu. Drugi redak izravno definira pravilo za pretvorbu, u gornjem primjeru svi zahtjevi će biti preusmjereni na http://newsite.ru/. Zastavice se stavljaju u uglaste zagrade: L - posljednje (posljednje) pravilo, R - tip preusmjeravanja (preusmjeravanje), označeno kao R = kod, gdje je oznaka abecedno ili numeričko (trajno ili 302).
Zapravo, mod_rewrite je vrlo korisna stvar, jer upravo zbog toga mnogi motori aktivno koriste takozvani CNC (Human URL Understandable). Ako niste upoznati s ovim pojmom, objasnit ću vam primjer. Članak o besplatne motore za web-lokaciju ima adresu: https://a-panov.ru/2014/11/free-cms/
Gledajući ovaj URL, odmah je jasno da je članak objavljen u studenom 2014. Uklanjanjem naslova s kliznom crtom - https://a-panov.ru/2014/11/ - dobit ćemo popis svih publikacija za studeni. Uobičajene adrese upišite:
https://a-panov.ru/?p=389
nema posebne ljubavi. Vidjevši takvu adresu, ne možete reći o stranici na kojoj on vodi, apsolutno ništa.
Ova metoda je dobra kada vam je svejedno na koju stranicu nove web-lokacije želite povezati. Ali ako ste se premjestili na drugu domenu, preporučujemo da sve zahtjeve preusmjerite dok održavate adrese. Da biste to učinili, upotrijebite sljedeći kôd:
RewriteRule ^. * $ Http://newsite.ru/$0 [QSA, L, R = trajno]
Nova QSA zastavica će također spremiti parametre koji se mogu naći na adresama nakon upitnika. U već poznatom primjeru:
https://a-panov.ru/?p=389
ako stavim kod u .htaccess gore, tada će biti preusmjeravanje na adresu http://newsite.ru/?p=389 koja bez te zastavice ne bi postojala.
U daljnjem tekstu ću izostaviti direktivu o pretvorbi:
RewriteEngine On
samo zapamtite: ako koristite mehanizam mod_rewrite, onda se svi uvjeti / konverzije moraju izvršiti nakon ove direktive. Da biste onemogućili sljedeći redak:
RewriteEngine Off
u skladu s tim, za svako pravilo nema potrebe za stalnim "uključivanjem" transformacija - počinje se obavljati automatski, odmah nakon prve direktive.
Kako postaviti preusmjeravanje na www (ili bez www)
Takva preusmjeravanja su potrebna za slučajeve kada je stranica dostupna na opcijama nsite.ru i www.nsite.ru, u ovom slučaju, tražilice ih smatraju duplikatima i mogu ili odabrati jednu od opcija kao glavno zrcalo , ili u pretrazi postoje opcije s obje domene. Općenito, ovo je negativan čimbenik pri rangiranju web-lokacije.
Opcija je jednostavnija za jednu domenu. Preusmjeravanje se vrši s poddomene www.site.ru na site.ru:
RewriteCond% {HTTP_HOST} ^ www site
RewriteRule. * Http: //nsite.ru/$0 [QSA, L, R = trajno]
Ovo je mjesto gdje se pojavila nova direktiva RewriteCond koja postavlja uvjet pod kojim bi preusmjeravanja trebala funkcionirati - pravila RewriteRule . Uvjet, u ovom slučaju, naziv domene koji odgovara www.nsite.ru (u regularnim izrazima, simbol točke znači "bilo koji znak", pa ga je poželjno štititi obrnutom kosom crtom).
Obrnuto preusmjeravanje je također vrlo jednostavno:
RewriteCond% {HTTP_HOST} ^ nsite \ t
RewriteRule. * Http://www.nsite.ru/$0 [QSA, L, R = trajno]
Obje opcije rade, ali imaju mali minus - za svaki novi config potrebno je zamijeniti domenu nsite.ru vlastitom. Je li moguće napraviti jedinstvenu opciju? Jednostavno!
Preusmjeri s bilo koje www poddomene:
RewriteCond% {HTTP_HOST} ^ www (. *) $
RewriteRule. * Http: //% 1 / $ 0 [QSA, L, R = trajno]
Preusmjeravanje na poddomenu s www:
RewriteCond% {HTTP_HOST}! ^ Www.
RewriteRule. * Http: //www.% {HTTP_HOST} / $ 0 [QSA, L, R = trajno]
% {HTTP_HOST} - trenutna domena
Kako stvoriti .htaccess
Takva se pitanja također pojavljuju. Problem je u tome što vam standardni Explorer (aplikacija u Windowsima koji je odgovoran za grafičko sučelje) ne dopušta stvaranje datoteka koje počinju s točkom (kreiranjem datoteka ili mapa desnim klikom na radnu površinu ili u prozoru i odabirom željene akcije s popisa Kreiraj ). No, postoji izlaz: otvorite standardni Notepad snimač, odaberite File → Save as ... u izborniku i navedite .htaccess kao naziv spremljene datoteke - nakon toga će biti kreiran.
Datoteka .htaccess ne radi
Postoje slučajevi kada direktive iz datoteke ne rade. To je obično uzrokovano činjenicom da je podrška za .htaccess onemogućena u konfiguraciji Apachea, za koju je direktiva odgovorna:
AllowOverride none
To se obično radi kako bi se donekle povećala brzina - u ovom slučaju web-poslužitelj ne pretražuje niti analizira .htaccess.
Također je moguće da se Apache ne koristi na poslužitelju, na primjer, IIS je glavni "gost" na Windows hostingu. Radi pojašnjenja, kontaktirajte podršku svog hostera.
Postoji li analogni .htaccess u nginx-u?
Još jedno često pitanje. Na ovom web poslužitelju to nije moguće. Međutim, to obično nije potrebno. Činjenica je da se nginx obično instalira kao frondend, tj. Prihvaća i obrađuje sve zahtjeve koji se ili izvršavaju ili preusmjeravaju na pozadinu, koju može izvesti Apache, koji se može dodatno konfigurirati pomoću .htaccess.
autori
nije online 1 dan
x64 (zv. andi)
Komentari: 2834 Publikacije: 394 Registracija: 02-04-2009
Htaccess u nginx-u?Neponyatki mogu izazvati možda taj broj - zašto je 301?
Ru/?
Ru/?
Ru/?
Je li moguće napraviti jedinstvenu opciju?
Htaccess u nginx-u?