Je ne suis pas trop familier avec les fichiers .htaccess, et j'essaie d'exclure un sous-domaine (quelque chose comme Cette règle interdit à quiconque de saisir simplement J'ai essayé quelques options d'exclusion d'un sous-domaine de cette règle de réécriture, mais en vain. Chacun des répertoires sur le site a son propre fichier .htaccess, mais il semble que celui-ci prime toujours. Des idées? Merci! P> p> dev.example.com) code> de la règle de réécriture suivante qui est déjà en place: < Pré> xxx pré>
exemple.com code> ou
http://example.com code> et oblige la présentation souhaitée de l'URL ,
http://www.example.com code>. p>
3 Réponses :
La règle existante exclut déjà un sous-domaine. Vous devez juste ajouter une nouvelle condition: Vous pouvez également vous débarrasser des expressions régulières: p> la syntaxe peut être trouvée à http://httpd.apache.org/docs/2.2/fr /mod/mod_rewrite.html#rewritecond p> p>
Cette syntaxe semble que cela fonctionnerait, mais provoque des erreurs de récursivité. Des idées?
Cependant, votre premier exemple semble bien fonctionner, en utilisant des expressions régulières ...
Les deux extraits devraient être équivalents et travailler pour moi. Je vous suggère de nettoyer le cache de votre navigateur et de réessayer.
Est-ce que j'ai râté quelque chose? Cette réponse semble inclure le sous-domaine de développement dans sa réécriture, c'est-à-dire un appel à dev.example.com fournira www.example.com. J'étais sous l'impression que l'OP veut le contraire (comme je le fais ;-)
@Chrispink de Le manuel : vous peut préfixer la chaîne de motif avec un '!' caractère (marquage d'exclamation) pour nier le résultat de la condition, quel que soit le type de condattern utilisé. I>
Ah, oui, je vois. Merci.
Je ne suis pas sûr que cela puisse vous adapter à vous, mais il est une bonne pratique d'utiliser la configuration Apache Virtualhosts au lieu de qui est généralement plus sûr que A .htaccess code>. Dans ce cas, pour le non-www -> www redirect, j'utilise habituellement quelque chose comme:
mod_rewrite code> règle. P > p>
Puisque vous ne correspondez rien, redirect code> ou
redirectpermanent code> devrait suffire.
J'ai écrit ce morceau de configuration il y a longtemps, puis le réutilisé à plusieurs endroits, comme, c'est que je ne me souviens donc pas exactement pourquoi j'ai utilisé redirectmatch code> au lieu de
redirection code> , mais je suppose que c'était le seul moyen de préserver le chemin de la demande complète, au lieu de simplement rediriger la nouvelle URL fixe. IE:
http://example.com/path/to/page.html code> rediriger vers
http://www.example.com/path/to/page.html code >.
RewriteEngine On RewriteCond %{HTTP_HOST} !^(dev|www)\.example\.com$ [NC] RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]