redirection d'un dossier virtuel sans le "/"

  • Auteur de la discussion Auteur de la discussion grubux
  • Date de début Date de début
Nouveau WRInaute
Tout d'abord bravo pour cet excelent site où j'ai appris l'URL rewitting. La nouvelle version me plait encore mieux !

J'utilise les répertoire virtuel, et mon problème c'est que si quelqu'un arrive sur http://www.monsite.com/dosier (qui est rewritté, le dossier en question n'existe donc pas physiquement) celui-ci tombe sur une erreur 404. J'aimerais donc que l'adresse soit redirigé vers http://www.nomdusite.com/dosier/

Je ne peux pas utiliser de RedirectPermanent, car j'ai beaucoup trop de dossier et sous-dossier ni créer tous les dossiers.
J'ai essayé aveec RedirectMatch sans succès.

Avez-vous une solution à ce problème ?
Merci de votre aide.
grubux
 
Nouveau WRInaute
Il n'y a personne pour m'aider ?
WRI, comment as-tu fais sur le site pour que celà fonctionne ? As-tu créé tous les dossiers ?
Merci de votre réponse
 
WRInaute passionné
Bonjour,

Je ne comprends pas pourquoi tu ne peux pas utiliser le RedirectPermenent ...
En fait, si j'ai bien compris, tu souhaites rediriger tout appel pour le répertoire dossier du premier domaine vers le même répertoire sur un nouveau domaine, c'est ça ?

Code:
RedirectPermanent /dossier http://www.nouveaudomaine.tld/dossier

Règlera d'un seul coup tous les sous-répertoires...

Dan
 
Nouveau WRInaute
Non ce n'est pas vraiment ça, mais j'avoue que je me suis mal exprimé et j'aurrais dû dire -http://www.monsite.com/dossier/ et pas -http://www.nomdusite.com/dossier/ car le domaine reste le même.

Pour être plus clair je vai prendre un exemple sur WRI. Si je demande l'URL https://www.webrankinfo.com/dossiers/conseils/relancer-referencement , celle-ci est automatiquement redirigé vers https://www.webrankinfo.com/dossiers/conseils/relancer-referencement . Ce qui est assez logique puisque le dossier "referencement" existe surement sur le site. Le problème survient lorsque ce dossier n'existe justement pas sur le site, mais qui est utilisé en URL rewriting. Comme le dossier n'existe pas, apache ne redirige pas avec le "/" !
J'ai résolu mon problème en modifiant l'architecture de mon site et j'ai créé tous les dossiers, mais je me demandais s'il n'y avant pas un autre moyen.
J'espère avoir été assez clair.
A+
 
Nouveau WRInaute
Salut Guig2 !
Merci pour ton lien mais les solutions qu'il propose ne semble pas fonctionner dans mon cas, à moin d'avoir mal compris, car je ne métrise pas très bien l'anglais. Quand au RedirectMatch je ne peux pas l'utiliser car si j'ai une page normal, celle-ci est aussi redirigé et ce n'est pas le but.
Je vai garder la solution de faire tous les dossiers. Il me semble que ce soit la meilleures.
Merci encore de votre aide.
 
Nouveau WRInaute
Salut Guig2 !
Merci pour ton lien mais les solutions qu'il propose ne semble pas fonctionner dans mon cas, à moin d'avoir mal compris, car je ne métrise pas très bien l'anglais. Quand au RedirectMatch je ne peux pas l'utiliser car si j'ai une page normal, celle-ci est aussi redirigé et ce n'est pas le but.
Je vai garder la solution de faire tous les dossiers. Il me semble que ce soit la meilleures.
Merci encore de votre aide.
 
WRInaute discret
j'ai la solution, un peu de php

Code:
	if(substr($_SERVER['REQUEST_URI'],-1)!='/'){
		header('HTTP/1.1 301 Moved Permanently'); 
		header("Location: ".$base.$_SERVER['REQUEST_URI']."/");
		exit();
	}

désolé d'avoir recreer un sujet pour ça,
pour info je ne pouvais pas faire celà pour chaque dossier car mes url sont généré dynamiquement et augmentente avec le nombre d'article, ça aurai était trop lent...
 
Nouveau WRInaute
Salut loupetiart,

Alors là chapeau ! Pourquoi n'avais-je pas penser au php ? Je m'efforçais de le faire avec le .htaccess et je n'y ai même pas pensé. En tout cas un grand merci. J'ai modifié un peu le code, car j'utilise les pseudo-frame et vu que j'ai aussi des pages htm dans les répertoire j'ai simplement ajouté une condition:

Code:
if(substr($_SERVER['REQUEST_URI'],-4)!='.htm' AND substr($_SERVER['REQUEST_URI'],-1)!='/'){ 
  header('HTTP/1.1 301 Moved Permanently'); 
  header("Location: ".$_SERVER['REQUEST_URI']."/"); 
  exit(); 
}

Voilà cela peut peut-être aidé quelqu'un.

Elle sert à quoi la variable $base ?

A+
grubux
 
Discussions similaires
Haut