web-dev-qa-db-fra.com

Les alias de domaine de règle de réécriture .htaccess ne fonctionnent pas

J'ai un site appelé: www.example.com c'est le domaine principal. Maintenant, j'ai un alias: www.example2.com.

Je veux que example2.com soit transféré vers un sous-domaine du domaine principal à subdomain.example.com.

J'ai utilisé le code suivant:

RewriteEngine On
RewriteCond %{HTTP_Host} ^(www\?example2\.com$ [NC]
RewriteRule ^(.*)$ http://subdomain.example.com/ [R=301,L]

J'ai une erreur de 500 serveur interne. Et je ne sais vraiment pas pourquoi.

1
Fabrizio Cocco

Comme w3d l'a suggéré dans les commentaires, vous avez une parenthèse ouverte, mais vous ne pouvez pas la fermer

RewriteEngine On
RewriteCond %{HTTP_Host} ^(www\?sek-muenchenstein\.ch$ [NC]
# right here -------------^
RewriteRule ^(.*)$ http://muenchenstein.sek-am.ch/ [R=301,L]

De plus, dans la ligne COND, vous avez www\?. Je pense que cela pourrait également être faux, il recherche maintenant littéralement le ? dans l'URL, comme ci-dessous, ce qui est hautement improbable:

www?sek-muenchenstein.ch

Si vous voulez que l'alias redirige, testez simplement sans www.
De plus, si vous êtes sur siteA.com/exemple, vous vous retrouverez sur siteB.com, sans/exemple.


Code avec toutes les suggestions:

RewriteEngine On
RewriteCond %{HTTP_Host} sek-muenchenstein\.ch$ [NC]
RewriteRule ^(.*)$ http://muenchenstein.sek-am.ch/$1 [R=301,L]
#  Take ------^ and put it ------------------------^^

Ou, si vous prévoyez à l'avance et qu'il y a plusieurs alias, inversez la vérification:

RewriteEngine On
# if not maindomain:
RewriteCond %{HTTP_Host} !muenchenstein.sek-am.ch$ [NC]
RewriteRule ^(.*)$ http://muenchenstein.sek-am.ch/$1 [R=301,L]

Essayez de rendre vos expressions rationnelles moins détaillées. Il est plus facile de lire le moins que vous ajoutez, et moins sujettes aux erreurs. Et les changements sont moins susceptibles de gâcher les choses, par exemple l'ajout d'un sous-domaine. Votre code cessera de fonctionner à cause du www, mien.

1
Martijn