Статьи

Rediriger .htaccess: rediriger vers un autre domaine et rediriger vers une autre page

  1. Redirect .htaccess: redirection permanente, 301
  2. Comment configurer une redirection vers www (ou sans www)
  3. Comment créer un fichier .htaccess
  4. Le fichier .htaccess ne fonctionne pas
  5. Existe-t-il un analogue de .htaccess dans nginx?
  6. Éditeur
  7. x64 (aka andi)

Bon dimanche!

Très souvent, dans les forums, vous pouvez trouver des questions sur .htaccess - le fichier de configuration du serveur Web Apache. Le principal problème est que le développement n’avait pas pour tâche de configurer commodément l’utilisateur final (la distribution n’inclut pas de shell pour les installations visuelles utilisant des cases à cocher, des listes déroulantes, etc.), mais les administrateurs de serveur s’y prennent remarquablement, se contentant de «mana». (de l'équipe Linux - man - un rapide tutoriel de développeurs, ou dans ce cas de professionnels à professionnels).

Dans la plupart des cas, de simples manipulations sont nécessaires: redirection inconditionnelle vers un autre site ou redirection d'un endroit à un autre (par exemple, lorsque l'URL de la section a été modifiée). Et chaque personne commence à croire qu’il n’ya aucun problème nulle part et qu’il est même inutile de chercher une solution sur Internet et de chercher sur le forum. Voyons ce que ces problèmes ne sont vraiment pas.

Voyons ce que ces problèmes ne sont vraiment pas

Redirect .htaccess: redirection permanente, 301

Cette chose a des noms différents. Neponyatki peut peut-être causer ce chiffre - pourquoi est 301? L'essentiel réside dans le protocole HTTP lui-même, qui répond aux demandes des clients avec un code d'état spécifique. Le code 404 non trouvé est connu de presque tout le monde. Le code 200 OK est presque inconnu, mais cela signifie que tout est en ordre et que le document sera affiché dans le navigateur. Mais le code 301 déplacé en permanence signifie que le document a finalement été déplacé vers une nouvelle adresse. C'est ce qu'on appelle souvent la redirection, bien que le pool de réponses total soit désigné par le nom - 3xx: Redirection .

Apache a plusieurs options pour les redirections. Le module mod_rewrite fournit un excellent mécanisme pour travailler avec les redirections. À l'avenir, je l'utiliserai dans les exemples. Le module mod_alias a également des directives pour les redirections à partir d'une adresse spécifique ou d'une adresse correspondant à l'expression régulière:
Rediriger permanent / http://newsite.ru/
RedirectMatch permanent. * Http://newsite.ru/
Mais mod_rewrite a des options supplémentaires pour la redirection, il est donc préférable de l’utiliser (IMHO).

En général, pour une redirection externe inconditionnelle (appelons-le utilisateur), dans laquelle le navigateur redirige automatiquement vers une autre page, généralement imperceptible pour l'utilisateur (la barre d'adresse change), vous pouvez insérer ce code dans .htaccess:
RewriteEngine On
RewriteRule. * Http://newsite.ru/ [L, R = permanent]
Ici, la première ligne inclut le mécanisme du module mod_rewrite , qui permet de faire n'importe quoi avec les adresses. Appelons cette conversion d'URL par conditions à la volée. La deuxième ligne définit directement la règle de conversion: dans l'exemple ci-dessus, toutes les demandes seront redirigées vers http://newsite.ru/. Les drapeaux sont placés entre crochets: L - dernier (dernier) règle, R - type de redirection (Redirect), indiqué par R = code, où code est une désignation alphabétique ou numérique (permanent ou 302).

En fait, mod_rewrite est une chose très utile, car c’est pour cette raison que de nombreux moteurs utilisent activement la dénommée CNC (Human URL Understandable). Si vous ne connaissez pas ce terme, je vais vous expliquer avec un exemple. Article sur moteurs gratuits pour le site a l'adresse: https://a-panov.ru/2014/11/free-cms/

En regardant cette URL, il est immédiatement clair que l'article a été publié en novembre 2014. En supprimant le titre par un slash de fin - https://a-panov.ru/2014/11/ - nous recevrons une liste de toutes les publications de novembre. Adresses normales, tapez:

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

pas d'amitié particulière. En voyant une telle adresse, vous ne pouvez pas dire de la page sur laquelle il mène, absolument rien.

Cette méthode est utile lorsque vous ne vous souciez pas de la page du nouveau site vers laquelle vous souhaitez créer un lien. Mais si vous avez changé de domaine, il est conseillé de rediriger toutes les demandes tout en conservant les adresses. Pour ce faire, utilisez le code suivant:
RewriteRule ^. * $ Http://newsite.ru/$0 [QSA, L, R = permanent]
Le nouvel indicateur QSA enregistrera également les paramètres qui peuvent être trouvés dans les adresses après le point d'interrogation. Dans l'exemple déjà familier:

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

si je place le code dans .htaccess ci-dessus, il y aura alors une redirection vers l'adresse http://newsite.ru/?p=389 qui, sans cet indicateur, n'existerait pas.

Ci-après, je vais omettre la directive d'inclusion de transformation:
RewriteEngine On
Rappelez-vous simplement que si vous utilisez le mécanisme mod_rewrite, toutes les conditions / conversions doivent être effectuées après cette directive. Pour désactiver la ligne suivante est utilisée:
RewriteEngine Off
en conséquence, pour chaque règle, il n'est pas nécessaire d'activer en permanence les transformations, cela commence automatiquement, immédiatement après la première directive.

Comment configurer une redirection vers www (ou sans www)

Ces redirections sont nécessaires dans les cas où le site est disponible sur les options nsite.ru et www.nsite.ru. Dans ce cas, les moteurs de recherche les considèrent comme des doublons et peuvent choisir l'une des options suivantes: miroir principal , ou dans la recherche, il y aura des options des deux domaines. En général, il s'agit d'un facteur négatif lors du classement d'un site.

Option plus facile pour un domaine. La redirection est effectuée à partir du sous-domaine www.site.ru vers site.ru:
RewriteCond% {HTTP_HOST} ^ www \ .nsite \ .ru $
RewriteRule. * Http://nsite.ru/$0 [QSA, L, R = permanent]
C’est là que la nouvelle directive RewriteCond est apparue, qui définit la condition dans laquelle les redirections doivent fonctionner: les règles RewriteRule . La condition, dans ce cas, le nom de domaine correspondant à www.nsite.ru (dans les expressions régulières, le symbole du point signifie “tout caractère”, il est donc conseillé de le protéger avec une barre oblique inverse).

La redirection inverse est également très simple:
RewriteCond% {HTTP_HOST} ^ nsite \ .ru $
RewriteRule. * Http://www.nsite.ru/$0 [QSA, L, R = permanent]
Les deux options fonctionnent, mais elles ont un petit inconvénient: pour chaque nouvelle configuration, il est nécessaire de remplacer le domaine nsite.ru par le vôtre. Est-il possible de faire une option unique? Facile!

Rediriger depuis n'importe quel sous-domaine www:
RewriteCond% {HTTP_HOST} ^ www \. (. *) $
RewriteRule. * Http: //% 1 / $ 0 [QSA, L, R = permanent]

Rediriger vers un sous-domaine avec www:
RewriteCond% {HTTP_HOST}! ^ Www \.
RewriteRule. * Http: //www.% {HTTP_HOST} / $ 0 [QSA, L, R = permanent]

% {HTTP_HOST} - domaine actuel

Comment créer un fichier .htaccess

De telles questions se posent également. Le problème est que l' explorateur standard (l'application sous Windows, responsable de l'interface graphique) ne vous permet pas de créer des fichiers commençant par un point (création de fichiers ou de dossiers en cliquant avec le bouton droit de la souris sur le bureau ou dans une fenêtre et en sélectionnant l'action souhaitée dans la liste Créer ). Mais il existe un moyen de sortir: ouvrez l’enregistreur standard du Bloc-notes, sélectionnez Fichier → Enregistrer sous ... dans le menu, puis spécifiez .htaccess comme nom du fichier enregistré. Il sera ensuite créé.

Le fichier .htaccess ne fonctionne pas

Il y a des cas où les directives d'un fichier ne fonctionnent pas. Cela est généralement dû au fait que le support .htaccess est désactivé dans la configuration Apache, pour laquelle la directive est responsable:
AllowOverride none

Ceci est généralement fait pour augmenter quelque peu la vitesse - dans ce cas, le serveur Web ne recherche pas et n'analyse pas .htaccess.

Il est également possible que Apache ne soit pas utilisé sur le serveur. Par exemple, IIS est l’invité principal de l’hébergement Windows. Pour plus de précisions, contactez le support de votre hébergeur.

Existe-t-il un analogue de .htaccess dans nginx?

Une autre question assez fréquente. Sur ce serveur Web, cela n’est pas possible. Cependant, ce n'est généralement pas nécessaire. Le fait est que nginx est généralement installé en tant que système, c'est-à-dire qu'il accepte et traite toutes les requêtes qu'il effectue lui-même ou qu'il redirige vers le backend, ce qui peut être effectué par Apache, qui peut être configuré davantage à l'aide de .htaccess.

Éditeur

pas en ligne 1 jour

x64 (aka andi)

Commentaires: 2834 Publications: 394 Inscription: 02-04-2009

Htaccess dans nginx?
Neponyatki peut peut-être causer ce chiffre - pourquoi est 301?
Ru/?
Ru/?
Ru/?
Est-il possible de faire une option unique?
Htaccess dans nginx?
2011.11.19
Карта