apache – redirige le suddomain vers le domaine principal

J'ai reconstruit mon ancien site. Il y avait un sous-domaine sur cet ancien site: forum.example.com . Maintenant, il n'existe plus. Une personne qui accède à mon site en utilisant forum.example.com devrait être redirigée vers example.com .

Mon file .htaccess :

 RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} !^example.com$ [NC] RewriteRule ^(.*)$ http://example.com/$1 [L,R=301] 

Si l'hôte n'est pas example.com , redirigez vers example.com . Le forum.example.com ne devrait-il pas correspondre à la condition?

Maintenant, pour la partie facultative de la question, si quelqu'un m'explique la règle ci-dessus, ce serait génial.

Voici ce que je comprends dans la règle ci-dessus:

Si l'hôte n'est PAS example.com ( !^example.com$ )
redirect vers http://example.com .

Ce que je ne comprends pas, c'est la première partie de la règle regex: ^(.*)$ , Puis la reference ( $1 ). Comment faire correspondre tout peut-il être mis en tant que path de file demandé? Ne serait-ce pas faire quelque chose comme ça?

 http://example.com/http://www.example.com/[requested file] 

One Solution collect form web for “apache – redirige le suddomain vers le domaine principal”

 RewriteBase / RewriteCond %{HTTP_HOST} !^example.com$ [NC] RewriteRule ^(.*)$ http://example.com/$1 [L,R=301] 

Le code ci-dessus examine l'hôte HTTP du browser de connection. Notez que .htaccess ne peut fonctionner que sur une request pouvant atteindre le server web. Cela fonctionnera pour forum.example.com , mais seulement si forum.example.com charge effectivement le contenu dans le directory dans lequel se trouve le file .htaccess. Si vous ne possédez pas les loggings DNS configurés (par exemple, un * A logging ou un logging du forum A) alors il ne va même pas sur le site, car le DNS n'est pas valide. Aussi, Apache doit être configuré pour charger le site pour ce VirtualHost. Il doit donc être indiqué dans la configuration d'Apache avant .htaccess peut transférer l'URL comme spécifié.

Pour votre deuxième question, dans la partie RewriteRule ^(.*)$ , Cela ne correspond que au file accessible sur le server. La partie RewriteCond applique uniquement la règle sur certains noms d'hôte, puis ^(.*)$ Spécifie que toute request suit les règles de réécriture.

Ainsi, le code .htaccess ci-dessus s'appliquera pour toutes les requests après le / si l'hôte ne correspond pas à example.com .

Faites-moi savoir si vous avez besoin d'autres explications.

  • Pourquoi les connections HTTP loopback ne fonctionnent-elles pas sur mes sous-domaines?
  • Comportement du kernel Linux en cas de collision de sous-réseaux
  • Comment configurer un VPN dans un sous-réseau différent
  • Configuration d'un domaine de troisième niveau
  • Rediriger tous les sous-domaines au domaine principal avec HTTPS sans cercles generics (nginx)
  • Force le trafic de sous-réseau local de Windows via une passerelle
  • Pourquoi utilisons-nous encore «www» dans les URL?
  • Les redirections Nginx: implémentent le sous-domaine et SSL
  • Création de sous-domaines. Comment gérer le server DNS
  • IBM Proventia Firewall Possible déposer des packages entre les sous-réseaux?
  • VPN avec un mauvais masque de sous-réseau
  • Les astuces du serveur de linux et windows, tels que ubuntu, centos, apache, nginx, debian et des sujets de rĂ©seau.