11
votes

Exclusion d'un sous-domaine de .htaccess mod_rewrite Règles?

Je ne suis pas trop familier avec les fichiers .htaccess, et j'essaie d'exclure un sous-domaine (quelque chose comme dev.example.com) de la règle de réécriture suivante qui est déjà en place: < Pré> xxx

Cette règle interdit à quiconque de saisir simplement exemple.com ou http://example.com et oblige la présentation souhaitée de l'URL , http://www.example.com .

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!


0 commentaires

3 Réponses :


17
votes

La règle existante exclut déjà un sous-domaine. Vous devez juste ajouter une nouvelle condition: xxx

Vous pouvez également vous débarrasser des expressions régulières: xxx

la syntaxe peut être trouvée à http://httpd.apache.org/docs/2.2/fr /mod/mod_rewrite.html#rewritecond


6 commentaires

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é.


Ah, oui, je vois. Merci.



3
votes

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 .htaccess . Dans ce cas, pour le non-www -> www redirect, j'utilise habituellement quelque chose comme: xxx

qui est généralement plus sûr que A mod_rewrite règle.


2 commentaires

Puisque vous ne correspondez rien, redirect ou redirectpermanent 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 au lieu de redirection , 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 rediriger vers http://www.example.com/path/to/page.html .



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

0 commentaires