IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Apache Discussion :

Rediriger un fichier sans extension déjà dans un dossier


Sujet :

Apache

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 25
    Points : 15
    Points
    15
    Par défaut Rediriger un fichier sans extension déjà dans un dossier
    Hello,
    Un peu compliqué à expliquer.

    J'ai une url www.toto.com/Professionnels

    "Professionnels" est un dossier physique, existant.

    Je souhaite dans ce dossier, avec un .htaccess propre à ce dossier, rediriger des fichiers sans le .html.

    Avec l'extension cela marche, sans ça plante, je pense qu'il considère le nom de mon fichier comme un dossier.

    Pourriez vous m'apporter de l'aide ?

    Mon but est : toto.com/Professionnels/conditions-generales-utilisation renvoie vers toto.com/Professionnels/index.php?p=cgu (sans montrer la 2eme URL, juste la première et en forçant le HTTPS ofc)

    Voici là où j'en suis dans mes tests :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    Options +FollowSymlinks
    RewriteBase /Professionnels/
    RewriteEngine On
    RewriteCond %{HTTPS} OFF
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
     
    RewriteRule ^conditions-generales-utilisation$ index.php?p=cgu [L]
     
    ErrorDocument 404 https://www.toto.com
     
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
     
    RewriteRule ^(.*)\.html$ /$1 [L,R=301]
    Je suis preneur de vos explications en plus de la correction car ça me rend un peu maboule.

    Merci par avance

  2. #2
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 835
    Points
    2 835
    Par défaut
    Bonjour,

    Je sais que cela n'est pas très intuitif mais il ne suffit de définir RewriteBase pour ne pas devoir écrire le chemin complet à chaque fois.

    La bonne règle est donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    RewriteRule ^conditions-generales-utilisation$ /Professionnels/index.php?p=cgu [L]

    Perso, je préfère toujours mettre tout mon .htaccess à la racine. D'ailleurs si vous l'aviez fait, vous ne vous seriez pas trompé :p

    PS : Evitez les majuscules et caractères spéciaux dans les URL ce n'est pas une très bonne façon de faire

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 25
    Points : 15
    Points
    15
    Par défaut
    Hello
    J'ai viré le htaccess du dossier Professionnels et dans celui de la racine j'ai rajouté ta ligne, cependant ça ne marche toujours pas. J'ai aussi viré toute trace du "RewriteBase" si j'ai bien suivi.

    Tu es bien sûr que toto.com/Professionnels/conditions-generales-utilisation renverra vers toto.com/Professionnels/index.php?p=cgu ?

    Attention j'insiste il me faut le dossier visible et le lien sera d'ailleurs dans les dossiers, une personne sera sur toto.com/Professionnels/ et si elle clique sur conditions-generales-utilisations je veux que ça charge index.php?p=cgu (sans modifier l'url)

    Merci par avance

    .PS : précision importante j'ai plusieurs dossiers, donc c'est pour ça que je faisais un .htaccess pour chaque dossier car je ne peux pas définir 50 RewriteBase dans la racine, non ?

  4. #4
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 835
    Points
    2 835
    Par défaut
    Bonjour,

    Bien sûr qu'il est possible de mettre autant de règles que nécessaire dans le .htaccess.
    Perso, quand je fais des transferts de domaine pour des clients, on se retrouve avec plusieurs centaines de redirections (c'est pour une question de référencement)

    Bref, le vrai problème, c'est que je n'ai regardé que la moitié de la règle d'écriture.
    En effet, la quasi totalité des gens se trompe pour la redirection car ils ne savent pas qu'il doit écrire l'URL finale complète; mais en relisant, je vois qu'il manque également la première partie ici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^conditions-generales-utilisation$ /Professionnels/index.php?p=cgu [L]
    Il manque le dossier dans la première règle. De plus, la règle est peut-être trop stricte avec le début (^) & fin ($) de string

    J'écrirais plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule /?Professionnels/conditions-generales-utilisation /Professionnels/index.php?p=cgu [L]
    NB : ATTENTION, l'ordre des redirections a une importance. Si une autre règle match avant celle-ci, ça sera l'autre qui sera utilisée

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 25
    Points : 15
    Points
    15
    Par défaut
    Excuse moi mais histoire d'être le plus précis possible (et merci par avance du temps passé), tu me parles bien du htaccess dans le dossier Professionnels là ou à la racine ? Si c'est à la racine on s'occupe du "/www/" (base présente sur les mutualisés d'OVH)

    Je suis un peu perdu entre dossier ou pas dossier pour la position du .htaccess haha

  6. #6
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 25
    Points : 15
    Points
    15
    Par défaut
    J'ai tout testé, racine ou professionnels, avec ou sans les www/ rien ne marche, un peu perdu là

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Options +FollowSymlinks
    RewriteBase /Professionnels/
    RewriteEngine On
    RewriteCond %{HTTPS} OFF
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
     
    RewriteRule /?Professionnels/conditions-generales-utilisation /Professionnels/index.php?p=cgu [L]
     
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ / [L,R=301]

  7. #7
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 835
    Points
    2 835
    Par défaut
    Bonjour,

    Le but n'est pas d'essayer de faire toutes les possibilités au pif mais de réfléchir à ce qu'on fait.
    Je viens de tester chez moi et cela fonctionne... mais, pas en faisant n'importe quoi.

    Vous indiquez d'ailleurs que vous avez 2 .htaccess (un à la racine et un dans le dossier) donc il faudrait pouvoir voir les 2 pour être sûr.
    Sachant que si la moindre règle écrite dans le premier match l'URL, ça va bypass l'utilisation du second.

    En tout cas, voici ce qui fonctionne chez moi, en écrivant dans le .htaccess A LA RACINE :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <IfModule mod_rewrite.c>
    RewriteBase /
    RewriteEngine On
    RewriteCond %{HTTPS} OFF
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
     
    RewriteRule /?Professionnels/conditions-generales-utilisation /Professionnels/index.php?p=cgu [L]
    </IfModule>
    Ce code est à placer AVANT n'importe quelle autre règle d'écriture qui ne serait pas d'application sur ce dossier.

    Mon test : https://tests.pierre-roels.com/Profe...es-utilisation

  8. #8
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 25
    Points : 15
    Points
    15
    Par défaut
    Juste : MERCI !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Recuperation dans xl de vieux fichiers sans extension
    Par omnazli dans le forum Excel
    Réponses: 9
    Dernier message: 21/12/2016, 09h29
  2. [Débutant] Afficher seulement le nom du fichier sans extension dans ma listbox
    Par Martipit dans le forum VB.NET
    Réponses: 2
    Dernier message: 13/04/2012, 23h59
  3. Réponses: 12
    Dernier message: 27/05/2011, 22h31
  4. copier tous les fichiers sans extension dans un meme repertoire
    Par soussou80 dans le forum Administration système
    Réponses: 1
    Dernier message: 26/03/2009, 13h02
  5. Réponses: 11
    Dernier message: 28/10/2005, 09h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo