Omleiding .htaccess: omleiden naar een ander domein en doorverwijzen naar een andere pagina

  1. Omleiding .htaccess: permanente omleiding, 301
  2. Hoe u een omleiding instelt op www (of zonder www)
  3. Hoe .htaccess te maken
  4. Het .htaccess-bestand werkt niet
  5. Is er een analogie van .htaccess in nginx?
  6. auteurs
  7. x64 (aka andi)

Goede zondag!

Heel vaak in de forums kun je vragen vinden over .htaccess - het configuratiebestand van de Apache-webserver. Het belangrijkste struikelblok is dat de ontwikkeling niet de taak had van een gemakkelijke configuratie voor de eindgebruiker (de distributie bevat geen shell voor visuele installaties met selectievakjes, vervolgkeuzelijsten, enz.), Maar serverbeheerders maken deze taak opmerkelijk goed, omdat ze tevreden zijn met "mana" (van het Linux-team - man - een korte handleiding van ontwikkelaars, of in dit geval van professionals tot professionals).

In de meeste gevallen zijn eenvoudige manipulaties vereist: onvoorwaardelijke omleiding naar een andere site of omleiding van de ene plaats naar de andere (bijvoorbeeld wanneer de URL van de sectie is gewijzigd). En elke persoon begint te geloven dat er nergens een probleem is en het is zelfs nutteloos om een ​​oplossing op het internet te zoeken en op het forum te zoeken. Laten we eens kijken wat deze problemen eigenlijk niet zijn.

Laten we eens kijken wat deze problemen eigenlijk niet zijn

Omleiding .htaccess: permanente omleiding, 301

Dit ding heeft verschillende namen. Neponyatki kan misschien dat aantal veroorzaken - waarom is 301? De essentie ligt in het HTTP-protocol zelf, dat reageert op clientverzoeken met een specifieke statuscode. De 404 Not Found- code is bij bijna iedereen bekend. De 200 OK- code is bijna onbekend, maar dit betekent dat alles in orde is en dat het document in de browser wordt weergegeven. Maar de code 301 permanent verplaatst betekent dat het document uiteindelijk naar een nieuw adres is verplaatst. Dit wordt vaak omleiding genoemd, hoewel de totale antwoordpool wordt aangeduid als - 3xx: doorverwijzing.

Apache heeft verschillende opties voor omleidingen. De module mod_rewrite biedt een uitstekend mechanisme voor het werken met omleidingen en in de toekomst zal ik dit in de voorbeelden gebruiken. De mod_alias-module heeft ook richtlijnen voor omleidingen vanaf een specifiek adres of vanaf een adres dat overeenkomt met de reguliere expressie:
Doorsturen permanent / http://newsite.ru/
RedirectMatch permanent. * Http://newsite.ru/
Maar mod_rewrite heeft extra opties voor doorverwijzing, dus het is het beste om (IMHO) het te gebruiken.

Over het algemeen kunt u voor een onvoorwaardelijke externe (laten we zeggen gebruiker) omleiding, waarbij de browser automatisch doorverwijst naar een andere pagina, meestal onmerkbaar voor de gebruiker (de adresbalk verandert), deze code in .htaccess plaatsen:
RewriteEngine On
RewriteRule. * Http://newsite.ru/ [L, R = permanent]
Hier bevat de eerste regel het mechanisme van de mod_rewrite- module, die alles mag doen met de adressen. Laten we deze URL-conversie bellen door omstandigheden tijdens het vliegen. De tweede regel definieert direct de regel voor conversie: in het bovenstaande voorbeeld worden alle verzoeken omgeleid naar http://newsite.ru/. Vlaggen worden tussen vierkante haken geplaatst: L - laatste (laatste) regel, R - omleidingstype (omleiding), aangegeven als R = code, waarbij code een alfabetische of numerieke aanduiding is (permanent of 302).

Mod_rewrite is zelfs een heel nuttig iets, omdat het daarom is dat veel engines actief gebruikmaken van de zogenaamde CNC (Human URL Understandable). Als u niet bekend bent met deze term, zal ik het met een voorbeeld toelichten. Artikel over gratis motoren voor de site heeft het adres: https://a-panov.ru/2014/11/free-cms/

Als we naar deze URL kijken, is het meteen duidelijk dat het artikel in november 2014 is gepubliceerd. Door de titel te verwijderen met een trash slash - https://a-panov.ru/2014/11/ - ontvangen we een lijst met alle publicaties voor november. Normale adressen, type:

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

geen speciale vriendelijkheid. Als je zo'n adres ziet, kun je niets zeggen over de pagina waarop hij leidt.

Deze methode is goed als het je niet uitmaakt naar welke pagina van de nieuwe site je wilt linken. Maar als u naar een ander domein bent verhuisd, is het raadzaam om alle verzoeken om te leiden met behoud van adressen. Gebruik hiervoor de volgende code:
RewriteRule ^. * $ Http://newsite.ru/$0 [QSA, L, R = permanent]
De nieuwe QSA- vlag zal ook de parameters opslaan die in de adressen na het vraagteken kunnen worden gevonden. In het al bekende voorbeeld:

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

als ik de code in .htaccess hierboven plaats, dan zal er een omleiding zijn naar het adres http://newsite.ru/?p=389 die zonder deze vlag niet zou bestaan.

Hierna zal ik de richtlijn voor transformatie-insluiting weglaten:
RewriteEngine On
onthoud gewoon: als u het mechanisme mod_rewrite gebruikt, moeten alle voorwaarden / conversies na deze richtlijn worden uitgevoerd. Om uit te schakelen wordt de volgende regel gebruikt:
RewriteEngine Off
daarom is het voor elke regel niet nodig om transformaties voortdurend "aan te zetten" - het begint automatisch te gebeuren, direct na de eerste richtlijn.

Hoe u een omleiding instelt op www (of zonder www)

Dergelijke omleidingen zijn vereist voor gevallen waarin de site beschikbaar is op de opties nsite.ru en www.nsite.ru, in dit geval beschouwen de zoekmachines ze als duplicaten en kunnen ze een van de opties kiezen als hoofdspiegel , of in de zoekopdracht zijn er opties van beide domeinen. Over het algemeen is dit een negatieve factor bij het rangschikken van een site.

Optie gemakkelijker voor één domein. Doorverwijzing wordt uitgevoerd van het subdomein www.site.ru naar site.ru:
RewriteCond% {HTTP_HOST} ^ www \ .nsite \ .ru $
RewriteRule. * Http://nsite.ru/$0 [QSA, L, R = permanent]
Dit is waar de nieuwe RewriteCond- richtlijn verscheen, die de voorwaarde stelt waaronder omleidingen moeten werken - de regels van RewriteRule . De voorwaarde, in dit geval de domeinnaam die overeenkomt met www.nsite.ru (in standaarduitdrukkingen betekent het puntsymbool "elk teken", dus is het raadzaam om het af te schermen met een backslash).

Omgekeerde omleiding is ook heel eenvoudig:
RewriteCond% {HTTP_HOST} ^ nsite \ .ru $
RewriteRule. * Http://www.nsite.ru/$0 [QSA, L, R = permanent]
Beide opties werken, maar ze hebben een klein minpuntje - voor elke nieuwe configuratie is het nodig om het nsite.ru- domein door het eigen domein te vervangen. Is het mogelijk om een ​​unieke optie te maken? Easy!

Omleiding van elk www-subdomein:
RewriteCond% {HTTP_HOST} ^ www \. (. *) $
RewriteRule. * Http: //% 1 / $ 0 [QSA, L, R = permanent]

Doorverwijzen naar een subdomein met www:
RewriteCond% {HTTP_HOST}! ^ Www \.
RewriteRule. * Http: //www.% {HTTP_HOST} / $ 0 [QSA, L, R = permanent]

% {HTTP_HOST} - huidig ​​domein

Hoe .htaccess te maken

Dergelijke vragen doen zich ook voor. Het probleem is dat de standaard Explorer (de toepassing in Windows, die verantwoordelijk is voor de grafische interface) u niet toestaat om bestanden te maken die beginnen met een punt (bestanden of mappen maken door met de rechtermuisknop op het bureaublad of in een venster te klikken en de gewenste actie in de lijst Maken te selecteren). Maar er is een uitweg: open de standaard Notepad-recorder, selecteer Bestand → Opslaan als ... in het menu en geef .htaccess op als de naam van het opgeslagen bestand - daarna wordt het gemaakt.

Het .htaccess-bestand werkt niet

Er zijn gevallen waarin richtlijnen van een bestand niet werken. Dit wordt meestal veroorzaakt door het feit dat de .htaccess-ondersteuning is uitgeschakeld in de Apache-configuratie, waarvoor de richtlijn verantwoordelijk is:
AllowOverride none

Dit wordt meestal gedaan om de snelheid iets te verhogen - in dit geval zoekt en parseert de webserver .htaccess niet.

Het is ook mogelijk dat Apache niet op de server wordt gebruikt, bijvoorbeeld, IIS is de hoofdgast op Windows hosting. Neem voor meer informatie contact op met de ondersteuning van uw hoster.

Is er een analogie van .htaccess in nginx?

Nog een vrij frequente vraag. In deze webserver is dit niet mogelijk. Dit is echter meestal niet vereist. Het feit is dat nginx meestal wordt geïnstalleerd als een frondend, dat wil zeggen dat het alle verzoeken accepteert en verwerkt die het zelf uitvoert of doorverwijzingen naar de backend, die kan worden uitgevoerd door Apache, die verder kan worden geconfigureerd met .htaccess.

auteurs

niet online 1 dag

x64 (aka andi)

Opmerkingen: 2834 Publicaties: 394 Registratie: 02-04-2009

Htaccess in nginx?
Neponyatki kan misschien dat aantal veroorzaken - waarom is 301?
Ru/?
Ru/?
Ru/?
Is het mogelijk om een ​​unieke optie te maken?
Htaccess in nginx?