Interdire l'acces à des Urls commençant par...

WRInaute discret
Bonjour,

J'ai installé l'url rewriting sur mon site... Je sais qu'il existe des solutions pour éviter le Duplicat Content..
Mais je voudrais mettre en place sur mon site une solution que j'ai imaginée...

Mes anciennes Urls étaient sous cette forme:
http://www.monsite.com/modules/news/article.php?storyid=1
Les nouvelles urls rewritées sont sous cette forme:
http://www.monsite.com/news+index.storytopic+1.htm

Problème les deux Urls sont accessibles.

Je voudrais trouver une solution simple qui permet de ne pas autoriser aux visiteurs et aux moteurs de recherche l'accés aux Url commençant par http://www.monsite/modules/...

Merci pour vos idées..
 
WRInaute discret
seebz a dit:
Tu dois faire des redirections 301 et/ou utiliser la balise canonical.

De cette façon, tu ne perds pas le référencement des anciennes urls.

C'est un site que je suis en train de construire... Il ne contient pas pour l'instant d'articles donc auun contenu référencé...
Mettre en place la banalise canonical est trop compliqué pour moi...

Je me demande juste s'il exide un code ou un script qui interdit l'accés aux moteurs de recherche mais aussi aux visiteurs à toutes les urls commençant par: http://www.monsite/modules/...

Merci
 
WRInaute occasionnel
Oula, le 404 c'est un peu radical,

Je t propose le fonctionnement suivant, tu mets en place l'algo suivant en haut de chaque page :

Tu recherches l'URL tapée par l'internaute ou le robot, "$_SERVER['request_URI']" en php il me semble :

if ($_SERVER['request_URI'] == "http://www.monsite.com/modules/news/article.php?storyid=1") {
//redirection 301 vers nouvelle URL
header("location:http://www.monsite.com/news+index.storytopic+1.htm");
}
 
WRInaute impliqué
Ce n'est pas radicale, c'est ce qu'il veut.

Ta redirection en PHP ne sera pas en 301 mais en 302 (redirection temporaire).
De plus, ce que tu proposes, c'est une simple redirection permanente d'un htacess.
 
WRInaute occasionnel
C'est vrai, mais je ne pense pas qu'il le faille en 302 temporaire, parce que du coup, on laisse penser que l'url qu'on l'on suouhaite atteindre sera un jour prochain à nouveau accessible, ce qu'il ne faut pas pour le ref nat, 301 est plus approprié.
Par contre, oui il est tout a fait propre de le faire par htaccess via

RedirectPermanent ^/modules/news/article\.php?storyid=$1 http://www.monsite.com/news+index.storytopic+$1.htm

Je crois que c'est la bonne syntaxe, mais à vérifier :D
 
WRInaute discret
Djibou_Te@M a dit:
C'est vrai, mais je ne pense pas qu'il le faille en 302 temporaire, parce que du coup, on laisse penser que l'url qu'on l'on suouhaite atteindre sera un jour prochain à nouveau accessible, ce qu'il ne faut pas pour le ref nat, 301 est plus approprié.
Par contre, oui il est tout a fait propre de le faire par htaccess via

RedirectPermanent ^/modules/news/article\.php?storyid=$1 http://www.monsite.com/news+index.storytopic+$1.htm

Je crois que c'est la bonne syntaxe, mais à vérifier :D

Merci j'ai essayé de mettre cela dans mon fichier Htacess (je suis chez OVH):
RedirectPermanent ^/modules/news/article\.php?storyid=$1 http://www.monsite.com/news+index.storytopic+$1.htm

Et il ne se passe rien les deux urls restent accessibles.
Même si ça marchait est-ce que ça voudrait dire que je devrais mettre manuellement l'adresse de chacun de mes articles dans le fichier Htaccess?
Il n'y a t-il pas une solution plus radicale et automatique?
 
WRInaute occasionnel
Essaye sinon la solution que je te donnais plus haut, tu fais la détection de l'URL tapée, si elle est de la forme ancienne URL, renvoie en 301 vers la nouvelle, dans le genre radical et je ne me prend pas la tête, c'est pas mal
 
WRInaute discret
Djibou_Te@M a dit:
Essaye sinon la solution que je te donnais plus haut, tu fais la détection de l'URL tapée, si elle est de la forme ancienne URL, renvoie en 301 vers la nouvelle, dans le genre radical et je ne me prend pas la tête, c'est pas mal

Bonjour,

Peux-tu me dire quelle ligne de code ça donnerait dans mon fichier Htacess?
 
WRInaute occasionnel
Bon, dans le htaccess, tu dois avoir un truc comme ceci, dans tous les cas :

RewriteRule ^news+index.storytopic+([0-9]+)\.htm modules/news/article.php?storyid=$1


1. Maintenant, en haut de ton script, tu ajoutes :
<?
// $_GET['id_news'] est l'id de la news passé en GET, je suppose

if($_SERVER['REQUEST_URI']==''modules/news/article.php?storyid=$_GET['id_news']"){

header("Status: 301 Moved Permanently");
header("Location: http://www.monsite.com/news+index.storytopic+".$_GET['id_news'].".htm");
exit();

}
?>

2. L'autre solution est de faire un redirect permanent en htaccess :

RedirectPermanent /modules/news/article.php?storyid=([0-9]+) http://www.monsite.com/news+index.storytopic+([0-9]+)\.htm

PS : je ne suis pas sûr pour la syntaxe de la solution 2

Dans tous les cas, si tu as bien fait ton taff en amont, tu ne devrais avoir que des URLs du type :

http://www.monsite.com/news+index.storytopic+$_GET['id_news'].htm


Voilà, en espérant que cela t'aide :D

RE-PS : solution du link rel canonical :

TU ajoutes dans le head de ton script :

<link rel="canonical" href="http://www.monsite.com/news+index.storytopic+$_GET['id_news'].htm" />

Bon j'aime pas cette solution parce que beaucoup trop de développeurs et webmasters en abusent par flemme de recherche et de suppression de Duplicate Content, mais bon, cela peut servir quand même si l'on est au pied du mur.

Pour plus d'infos sur cette dernière solution :
https://www.webrankinfo.com/dossiers/techniques/url-canonique
 
WRInaute discret
Merci pour ton aide

J'ai essayé les 2 solution proposées.

1/ J'ai mis dans mon fichier Htacces
Code:
<?
// $_GET['id_news'] est l'id de la news passé en GET, je suppose

if($_SERVER['REQUEST_URI']==''modules/news/article.php?storyid=$_GET['id_news']"){

header("Status: 301 Moved Permanently");
header("Location: http://www.monsite.com/news+index.storytopic+".$_GET['id_news'].".htm");
exit();

}
?>
J'ai une page d'erreur 500

2/ J'ai mis
Code:
RedirectPermanent /modules/news/article.php?storyid=([0-9]+) http://www.monsite.com/news+index.storytopic+([0-9]+)\.htm
Il ne se passe rien.... :(

Pour info mon fichier Htaccess se présente comme cela:
Code:
SetEnv PHP_VER 5
SetEnv REGISTER_GLOBALS 0

#<Simplified URL Hack>

RewriteEngine on

RewriteCond %{REQUEST_FILENAME}   !-f
RewriteRule ^.*\.(htm|html) urlloadpage.php [L]
RewriteRule ^$ urlloadpage.php [L]

#</Simplified URL Hack>


Ai-je fais une erreur?
 
WRInaute occasionnel
Dis moi juste, tu débutes en PHP, n'est ce pas ?

Ce n'est pas une critique, bien au contraire, mais c'est là l'erreur d'un novice en prog. web (tout le monde y est passé)

Je pense aussi que du coup, tu utilises un CMS, sinon si c'était ton propre code tu n'au rais pas posé la ou les questions ci-dessus.

C'est pas grave, on va reprendre au tout début :wink:

Tu utilises quoi comme plateforme / CMS ?

Avec ça, on avancera

Au fait, avec plaisir pour l'aide, en plus, même si ça balance un peu de temps en temps, il faut le prendre avec le sourire, c'est un forum d'info et d'entraide

Dans l'attente de ta réponse
 
WRInaute discret
Djibou_Te@M a dit:
Dis moi juste, tu débutes en PHP, n'est ce pas ?

Ce n'est pas une critique, bien au contraire, mais c'est là l'erreur d'un novice en prog. web (tout le monde y est passé)

Je pense aussi que du coup, tu utilises un CMS, sinon si c'était ton propre code tu n'au rais pas posé la ou les questions ci-dessus.

C'est pas grave, on va reprendre au tout début :wink:

Tu utilises quoi comme plateforme / CMS ?

Avec ça, on avancera

Au fait, avec plaisir pour l'aide, en plus, même si ça balance un peu de temps en temps, il faut le prendre avec le sourire, c'est un forum d'info et d'entraide

Dans l'attente de ta réponse

Oui en effet, je débute...
Merci pour ton respect des limites des autres et pour ta disponibilité :D

Mon site tourne sous xoops 2.5
L'url rewrite est faîte avec un Hack que tu trouveras ici (2 fichiers): http://www.frxoops.org/modules/TDMDownloads/singlefile.php?cid=20&lid=180

Encore Merci...
 
WRInaute occasionnel
Salut Hamoudi,
désolé pour la réponse tardive, maladie à la con, quand tu nous tiens ...
BOn j'ai cherché, mais je sèche un peu, surtout que je developpe pas trop sur des CMS, alors xoop, je suis autant débutant que toi là dessus, j'ai essayé quelques trucs, mais rien ne passe... :oops:

Désolé, peut être que quelqu'un sur ce forum sera plus à même pour répondre à ta demande. :(
 
WRInaute discret
Djibou_Te@M a dit:
Salut Hamoudi,
désolé pour la réponse tardive, maladie à la con, quand tu nous tiens ...
BOn j'ai cherché, mais je sèche un peu, surtout que je developpe pas trop sur des CMS, alors xoop, je suis autant débutant que toi là dessus, j'ai essayé quelques trucs, mais rien ne passe... :oops:

Désolé, peut être que quelqu'un sur ce forum sera plus à même pour répondre à ta demande. :(

Ok merci

Mais si je mets tout simplement dans robots.txt
User-agent: *
Disallow: /modules/

Peut-être que toutes les pages dont l'url commencera par http://www.monsite/modules/... ne seront plus référencées par Google et donc plus de Duplicat Content avec les pages rewritées dont l'url se présente comme cela: http://www.monsite.com/news+index.storytopic+1.htm ????

Qu'en penses-tu?
 
WRInaute occasionnel
L'inconvénient avec une telle méthode est que si tu installes de nouveaux modules par la suite, vas tu penser que tu dois modifier ton robot.txt ????
Je dis ça parce que tu risques (déjà vécu) d'oublier ce truc là, surtout d'ici 6 mois :mrgreen: , et que le temps que tu te rendes compte de ce qu'il t'arrive, le mal sera déjà fait et tu devras trouver une autre solution pour ...pour, pour ton problème actuel plus le temps que tu auras perdu avec le problème futur.

Non je penses qu'il te faut trouver une solution pour ce problème de réécriture, et une solution ciblée, ...

Après, oui, au premier coup d'oeil, il est possible que ça fonctionne avec le robot.txt, j'arrive pas à mesurer la portée de cette action. :(
 
Discussions similaires
Haut