Rediriger tout sauf un type d'adresse

Discussion dans 'URL Rewriting et .htaccess' créé par supertino7, 4 Juin 2010.

  1. supertino7
    supertino7 Nouveau WRInaute
    Inscrit:
    4 Juin 2010
    Messages:
    6
    J'aime reçus:
    0
    Bonjour,

    Je cherche à rediriger toute adresse de subdomain.domain.com vers www.domaine.com, sauf si l'url est du type : subdomain.domain.com/any-page.htm

    J'ai pensé à utiliser en tête de liste un RewriteRule matchant les urls se terminant par .htm , en utilisant le flag L pour stopper le matching.

    Code:
    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^subdomain.domain.com [NC]
    RewriteRule ^([^.]*).htm$ $1.htm [L]
    RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]
    # rediriger domain.com vers www.domain.com
    RewriteCond %{HTTP_HOST} ^domain.com$ [NC]
    RewriteRule ^(.*) http://www.domain.com/$1 [QSA,R=301,L]
    # règles du Zend Framework
    RewriteCond %{REQUEST_FILENAME} -s [OR]
    RewriteCond %{REQUEST_FILENAME} -l [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^.*$ - [NC,L]
    RewriteRule ^.*$ index.php [NC,L]
    
    Mais ça ne fonctionne pas, FF me donne le message :
    "Firefox a détecté que le serveur redirige la demande pour cette adresse d'une manière qui n'aboutira pas."
    Merci pour votre aide
     
  2. mahdivitchee
    mahdivitchee WRInaute discret
    Inscrit:
    22 Mars 2010
    Messages:
    168
    J'aime reçus:
    0
    Bonjour
    et bienvenue dans wri :wink:

    tester ce code ,

    Code:
    RewriteCond %{REQUEST_URI} !(.*).htm$
    RewriteRule (.*) http://www.domaine.com/$1 [QSA,R=301,L]
    
    j'ai pas tester mais je pense que ça marche :wink:

    bonne journée
     
  3. supertino7
    supertino7 Nouveau WRInaute
    Inscrit:
    4 Juin 2010
    Messages:
    6
    J'aime reçus:
    0
    Hello,
    merci pour l'accueil et ton aide :)
    Malheureusement, ça ne prends pas. Toujours le même message sous FF.
    J'ai l'impression qu'il y a un conflit avec une ligne en dessous qui cause une redirection infinie.

    ps : au passage, je ne comprends pas à quoi sert le "!" devant l'uri ? Je connais le "^" qui indique un début de chaine, mais le "!" je vois pas

    Merci
     
  4. supertino7
    supertino7 Nouveau WRInaute
    Inscrit:
    4 Juin 2010
    Messages:
    6
    J'aime reçus:
    0
    Bon apparemment, il faut répéter les RewriteCond à chaque instruction.

    Code:
    RewriteEngine On
    # garder les adresses se terminant par .htm
    RewriteCond %{HTTP_HOST} ^subdomain.domain.com [NC]
    RewriteRule \.htm$ - [L]
    # rediriger tout le reste vers www
    RewriteCond %{HTTP_HOST} ^subdomain.domain.com [NC]
    RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]
    # rediriger domain.com vers www.domain.com
    RewriteCond %{HTTP_HOST} ^domain.com$ [NC]
    RewriteRule ^(.*) http://www.domain.com/$1 [QSA,R=301,L]
    # règles pour le Zend Framework
    RewriteCond %{REQUEST_FILENAME} -s [OR]
    RewriteCond %{REQUEST_FILENAME} -l [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^.*$ - [NC,L]
    RewriteRule ^.*$ index.php [NC,L]
    
    Les liens quelconques sont bien redirigés vers www.domain.com/etc...

    Mais les adresses en .htm me donnent cette fois un 404 not found.

    Je pense que c'est la règle
    Code:
    RewriteRule ^.*$ index.php [NC,L]
    
    qui ne s'applique pas sur le sousdomaine
     
  5. mahdivitchee
    mahdivitchee WRInaute discret
    Inscrit:
    22 Mars 2010
    Messages:
    168
    J'aime reçus:
    0
    Bonjour

    le ! ( interdit )
    le ^ qui commence

    un article : http://httpd.apache.org/docs/2.0/misc/rewriteguide.html


    j'ai remarque qui tu es compliquez bq les chose

    normalement avec 2 ligne, il faut ça marche

    Code:
    RewriteCond %{HTTP_HOST}   !^/(.*)\.htm$
    RewriteRule ^/(.*)     http://www.domaine.com/$1 [L,R]
    
    Nb: j'ai ajouter ^ dans le 1er ligne et aussi \

    1er ligne : interdit redirection de toutes les fichier qui termine par .html
    2éme ligne : redirection toutes le contenu de ancien site vers nouveau site


    ( tester seulement la 2éme ligne est ce que ça marche ou non )

    *** un exemple détaillé dans ce site : ***http://yansanmo.progysm.com/doc/modrewrite

    RewriteRule ^([a-z]+)/(([a-z]+)/([a-z0-9=&]*))?$ /home/test/public_html/index.php?cat=$1&id=$3&$4

    Cette chaîne permet de retranscrire: /rep/5/var3&test=4 en /index.php?cat=rep&id=5&var3&test=4. Cependant, comment exclure un seul répertoire, /prive/ par exemple, d'utiliser cette redirection? Nous sommes arrivés à trouver cette solution:

    RewriteCond %{REQUEST_URI} !prive/.*

    On écrit la commande RewriteCond juste avant la commande RewriteRule. Elle indique qu'il ne faut pas que notre URI débute par prive/. Le fichier .htaccess ressemble donc à:

    RewriteEngine On
    RewriteCond %{REQUEST_URI} !prive/.*
    RewriteRule ^([a-z]+)/(([a-z]+)/([a-z0-9=&]*))?$ /home/test/public_html/index.php?cat=$1&id=$3&$4
     
  6. supertino7
    supertino7 Nouveau WRInaute
    Inscrit:
    4 Juin 2010
    Messages:
    6
    J'aime reçus:
    0
  7. supertino7
    supertino7 Nouveau WRInaute
    Inscrit:
    4 Juin 2010
    Messages:
    6
    J'aime reçus:
    0
    Code:
    RewriteCond %{HTTP_HOST} ^sousdomaine\.domaine\.com [NC] #concerne le sous-domaine 
    RewriteCond %{REQUEST_URI} !^/(.*)\.htm$ #tout ce qui ne se termine pas par .htm
    RewriteRule ^/(.*) http://www.domaine.com/$1 [L,R] # on dirige le tout vers www.domaine.com/etc...
    
    # rediriger domaine.com vers www.domaine.com
    RewriteCond %{HTTP_HOST} ^domaine\.com$ [NC]
    RewriteRule ^(.*) http://www.domaine.com/$1 [QSA,R=301,L]
    
    # Redirection vers index.php sauf fichiers
    RewriteCond %{REQUEST_FILENAME} -s [OR]
    RewriteCond %{REQUEST_FILENAME} -l [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^.*$ - [NC,L]
    RewriteRule ^.*$ index.php [NC,L]
    
    Pour moi ça a l'air bon, mais la redirection ne s'effectue pas.

    http://sousdomaine.domaine.com/une-requete.htm => ne redirige pas, parfait ça fonctionne.
    http://sousdomaine.domaine.com/foo/bar => ne redirige pas vers http://www.domaine.com/foo/bar :(
     
  8. supertino7
    supertino7 Nouveau WRInaute
    Inscrit:
    4 Juin 2010
    Messages:
    6
    J'aime reçus:
    0
    Bon en fait, il semble que les conditions et la règle ne soient même pas matchées.
    J'ai essayé ça :
    Code:
    RewriteCond %{HTTP_HOST} ^sousdomaine\.domaine\.com [NC]
    RewriteRule ^/(.*) https://www.google.com/?q=$1 [L,R]
    
    pour le fun. Et aucune adresse n'est redirigée vers google. On dirait que la condition HTTP_HOST ne passe vraiment pas
     
Chargement...
Similar Threads - Rediriger type adresse Forum Date
Rediriger des domaines au nom explicite vers un domaine établi mais moins spécifique Netlinking, backlinks, liens et redirections 1 Février 2021
page 404 lien indexer comment le rediriger? Débuter en référencement 12 Janvier 2021
rediriger les sous domaines vers la page d'accueil URL Rewriting et .htaccess 11 Janvier 2021
Domaines Expirés : rediriger ou faire des sites ? Netlinking, backlinks, liens et redirections 3 Décembre 2020
Comment rediriger en 301 toutes les 404 vers une page précise ? Débuter en référencement 9 Septembre 2020
Rediriger Index.php vers racine URL Rewriting et .htaccess 15 Août 2020
Tout rediriger sauf une page contenant 'JS' URL Rewriting et .htaccess 3 Juin 2020
Rediriger un site avec www vers sans www Administration d'un site Web 20 Avril 2020
Rediriger une page URL Rewriting et .htaccess 6 Avril 2020
Rediriger uniquement le dossier sans les pages internes Netlinking, backlinks, liens et redirections 17 Février 2020