Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Serveurs (Apache, IIS,...) > Apache
Apache Forum d'entraide Apache. Avant de poster : Cours Apache, FAQ Apache
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/09/2011, 13h01   #1
Membre du Club
 
Inscription : janvier 2010
Messages : 317
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 317
Points : 62
Points : 62
Par défaut Faire un mini Short url par sous domaine

Bonjour.

Je veux me faire une liste de sites que je redirigerait à partir d'alias de sous-domaines : exemple :
Code :
1
2
3
RewriteEngine on
RewriteCond %{HTTP_HOST} ^alias\.sousdomaine\.domaine\.com$
RewriteRule (.?) http://www.facebook.com/#test [L]
Je peux utiliser des alias de sous-domaine.

Code :
ceci : #test donne ceci quand la redirection a lieu : %23test
et ce n'est pas bon.

de l'aide serait apprécié.
dancom5 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 21h47   #2
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 293
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 293
Points : 8 579
Points : 8 579
C'est normal : la partie #... des URL, ce qu'on appelle le fragment, est uniquement gérée par les navigateurs, les serveurs ne la connaissent pas. Le # est utilisé pour gérer les ancres internes aux pages HTML. Partant de là, c'est parfaitement normal qu'Apache encode le #.
__________________

Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2011, 04h53   #3
Membre du Club
 
Inscription : janvier 2010
Messages : 317
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 317
Points : 62
Points : 62
Donc, faudrait que j'utilise une partie PHP pour arriver à mes fins.

Alors, comment, je peux arriver à faire avec PHP? Il faudra alors que je modifie ma commande dans .htaccess pour y arriver.

Citation:
Envoyé par _Mac_ Voir le message
C'est normal : la partie #... des URL, ce qu'on appelle le fragment, est uniquement gérée par les navigateurs, les serveurs ne la connaissent pas. Le # est utilisé pour gérer les ancres internes aux pages HTML. Partant de là, c'est parfaitement normal qu'Apache encode le #.
dancom5 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2011, 12h49   #4
Membre du Club
 
Inscription : janvier 2010
Messages : 317
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 317
Points : 62
Points : 62
Quelqu'un m'a envoyé une réponse et je voudrais lui dire merci.
Ma solution finale en .htaccess est la suivante :

Code :
1
2
3
4
5
6
7
RewriteEngine on
RewriteCond %{HTTP_HOST} ^alias1\.sousdomaine\.domaine\.com$
RewriteRule (.?) http://ledomaine1.com/#test [L,NE]

RewriteEngine on
RewriteCond %{HTTP_HOST} ^alias2\.sousdomaine\.domaine\.com$
RewriteRule (.?) http://ledomaine2.com [L,NE]
En gros, il fallait ajouter [NE] à la fin pour Non Escape pour quand on a un dièse dans la ligne de rewriterule.

En utilisant comme base .htaccess mais que la liste aurait été dans un fichier .php, comment j'aurais pu m'y prendre?

Mon but est de me faire une liste de mes redirections.
dancom5 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2011, 13h33   #5
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 293
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 293
Points : 8 579
Points : 8 579
En effet, j'avais oublié le flag NE.

Citation:
Envoyé par dancom5 Voir le message
En utilisant comme base .htaccess mais que la liste aurait été dans un fichier .php, comment j'aurais pu m'y prendre?

Mon but est de me faire une liste de mes redirections.
Je n'ai pas du tout compris ce que tu veux faire. Tu peux donner un exemple ?
__________________

Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2011, 14h19   #6
Membre du Club
 
Inscription : janvier 2010
Messages : 317
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 317
Points : 62
Points : 62
Au lieu de me faire la liste dans un fichier .htaccess des domaines à rediriger selon leur alias.

Je voudrais que ce soit dans un fichier comme redirect.php?alias=..

Autrement dit, je pourrais mettre dans une base de données les alias à rediriger avec leur url de redirection.

et dans .htaccess, je mettrais qu'une ligne qui va utiliser redirect.php pour rediriger.

Citation:
Envoyé par _Mac_ Voir le message
Je n'ai pas du tout compris ce que tu veux faire. Tu peux donner un exemple ?
dancom5 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2011, 15h17   #7
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 293
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 293
Points : 8 579
Points : 8 579
OK. Oui, c'est parfaitement faisable : tu peux "tokeniser" les RewriteCond, donc les noms d'hôtes, et utiliser ces tokens dans la RewriteRule du dessous :
Code :
1
2
3
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(.*)\.sousdomaine\.domaine\.com$
RewriteRule (.?) redirect.php?alias=%1 [L,NE]
__________________

Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2011, 17h07   #8
Membre du Club
 
Inscription : janvier 2010
Messages : 317
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 317
Points : 62
Points : 62
Sauf que j'ai aucune idée quoi mettre dans mon redirect.php pour que ça fonctionne. De l'aide serait appréciée.

Citation:
Envoyé par _Mac_ Voir le message
OK. Oui, c'est parfaitement faisable : tu peux "tokeniser" les RewriteCond, donc les noms d'hôtes, et utiliser ces tokens dans la RewriteRule du dessous :
Code :
1
2
3
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(.*)\.sousdomaine\.domaine\.com$
RewriteRule (.?) redirect.php?alias=%1 [L,NE]
dancom5 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/10/2011, 09h08   #9
Membre du Club
 
Inscription : janvier 2010
Messages : 317
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 317
Points : 62
Points : 62
Par défaut une entrée pour toute dans un fichier redirect.php

Bonjour.

Actuellement, ce qui marche bien, c'est de créer un fichier pour chaque alias de domaine et une entrée dans .htaccess. Mais, je souhaiterais plutôt faire toute mes entrée dans un fichier et dans htaccess faire juste une entrée pour toute.

Code :
1
2
3
RewriteEngine on
RewriteCond %{HTTP_HOST} ^google\.sd\.domain\.com$
RewriteRule (.*) google.php
et dans :

Code :
1
2
3
<?php
header('location:http://google.com');
?>
dancom5 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/10/2011, 14h14   #10
Membre du Club
 
Inscription : janvier 2010
Messages : 317
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 317
Points : 62
Points : 62
Tiens, je viens de comprendre le fonctionnement en créant un fichier de test comme voici dans redirect.php :
Code :
1
2
3
4
<?php
echo 'qqchose: '.$_GET['alias'];
?>
Merci _MAC_

Je vais pouvoir réaliser ce que je veux.
dancom5 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/10/2011, 14h20   #11
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 293
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 293
Points : 8 579
Points : 8 579
Repars de là :
Citation:
Envoyé par _Mac_ Voir le message
OK. Oui, c'est parfaitement faisable : tu peux "tokeniser" les RewriteCond, donc les noms d'hôtes, et utiliser ces tokens dans la RewriteRule du dessous :
Code :
1
2
3
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(.*)\.sousdomaine\.domaine\.com$
RewriteRule (.?) redirect.php?alias=%1 [L,NE]
et tu codes simplement redirect.php. C'est du PHP, ce n'est pas bien compliqué. Au pire, tu fais comme tu as commencé à faire mais avec des if pour être un peu plus souple et éviter justement d'avoir 40 000 fichiers PHP pour tes redirections :
Code php :
1
2
3
4
5
6
7
8
9
10
11
12
<?php
if ($_GET["alias"] == "abc") {
    header("Location: http://...");
}
if ($_GET["alias"] == "def") {
    header("Location: http://...");
}
if ($_GET["alias"] == "google") {
    header("Location: http://www.google.com/");
}
...
?>
S'il faut aller chercher les URL de redirection dans une base de données, ben tu te connectes à la base de données pour faire une requête avec $_GET["alias"] comme clé de recherche dans ta clause WHERE (tu penses bien à passer par des fonctions du style mysql_real_escape_string() pour éviter l'injection SQL) et tu utilises le résultat de ta requête pour construire l'URL de redirection.
__________________

Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/10/2011, 15h00   #12
Membre du Club
 
Inscription : janvier 2010
Messages : 317
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 317
Points : 62
Points : 62
J'ai justement genre 10 minutes avant de recevoir la notification de ton message fait ceci et ça fonctionne bien. :

Code :
1
2
3
4
5
6
<?php 
$redirection=htmlspecialchars($_GET['alias']);

if($redirection=="google") { header('location:http://google.ca'); } else {}
if($redirection=="yahoo") { header('location:http://yahoo.ca'); } else {}
?>
C'est bien noté pour la base de données. Je suis relativement à l'aise avec ça.

Je vais ajouter un système de cloak pour cacher le url au besoins. Je suis obligé d'utiliser les frames. A moins qu'il y ait une autre méthode.

Merci.
dancom5 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h51.


 
 
 
 
Partenaires

Hébergement Web