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.

  • domaine de la carte au sous-domaine
  • Ajout de sous-domaines dynamics à mon server web?
  • configurez nginx name.site.com vers blah / name?
  • IIS 7.5 + AD DNS = aucun nom de sous-domaine intranet 4 u?
  • Fusion de TI - site autonome avec controller de domaine VS thinpostr outpost de clients avec access au server terminal
  • Quels sont les problèmes de security lors de la création d'un pare-feu entre deux sous-réseaux?
  • Existe-t-il des conventions de dénomination pour les services et leur domaine associé?
  • Comment utiliser VirtualHosts dans apache2 pour le sous-domaine mobile?
  • Comment ajouter un sous-domaine au serveur d'échange 2013?
  • Ajouter cname sans mettre le sous-domaine
  • Nombre maximum d'hôtes par réseau
  • Les astuces du serveur de linux et windows, tels que ubuntu, centos, apache, nginx, debian et des sujets de rĂ©seau.