Rewrite + frame

Nouveau WRInaute
Bonjour :)

Je désire mettre en place un système qui utilisera le mod_Rewrite de mon serveur Apache v1.3 et frame.php.
Explication :arrow:
Dans mon httpd.conf :
Code:
RewriteEngine on
RewriteRule ^/(.*) http://server/frame.php?page=$1

Dans la frame.php :
Code:
<?
$page = $_GET['page']; 
$adresse = 'http://server';
$frame = '<FRAMESET ROWS="100%,*"><frame src="';
$frame2 = '"></FRAMESET><NOFRAMES>';

print('<html>
<head>
</head>
$frame$adresse$page$frame2
<body>
</body>
</NOFRAMES>
</html>');
?>

Mais malheuresement....un problème a fait son apparition, personne n'a su me donner une solution valable jusqu'a aujourd'hui.
Quand je vais sur http://server/toto génial, je me retrouve sur http://server/frame.php?page=toto , jusque la tout fonctionne.Mais la frame tourne en BOUCLE :!: Bref...rien ne va plus :? J'ai cherché dans le tuto et il est noté [L], j'ai donc mis :
RewriteRule ^/(.*) http://server/frame.php?page=$1 [L] , ca tourne toujours en boucle.

Voila, je pars d'un système assez simple on peut pas dire le contraire.mais voila un gros problème qui me bloque.

Merci de bien vouloir m'aider.
à+
 
Nouveau WRInaute
On m'a proposé pour éviter d'avoir cette boucle , c'est de faire cela :
si (page demandée ne commence pas par framed_)
{
page.htm -> frame.php?page=framed_page.htm
}
sinon
{
framed_page.htm = page.htm
}

Mais déja permière question comment fait t-on pour qu'il vérifie si la page demandée ne commence pas par framed_ ? quel est la ligne qui permet de vérifier ceci ?
 
Nouveau WRInaute
Ou plus simplement, comment faire pour qu'il vérifie si elle commence par "framed_" , si elle commence par "framed_" dans ce cas il arrete "l'opération".

Merci :roll:
 
Nouveau WRInaute
MERCI hetzeld !!!

Bon sang je cherche cette réponse depuis hier après-midi.
Y'en a pas un qui a su me répondre :twisted:
Vraiment merci pour votre accueil et ta réponse :twisted:
Si j'ai des problèmes avec l'a mise en palce du système, je vous contacterais :wink:
 
Nouveau WRInaute
Malheuresement j'ai toujours des problèmes :
voici ce que j'ai mis dans mon httpd.conf :
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !framed_$
RewriteRule ^/(.*) http://nomdedomaine.com/frame.php?page=framed_$1

La deuxième ligne c'est le code que tu m'as passé, pour qu'il vérifie si ca commence par framed_.
Ensuite dans frame.php :
<?
$page = $_GET['page'];
$adresse = 'http://nomdedomaine.com/';
$frame = '<FRAMESET ROWS="100%,*"><frame src="';
$frame2 = '"></FRAMESET><NOFRAMES>';

print("<html><head></head>$frame$adresse$page$frame2<body></body></NOFRAMES>
</html>");
?>

Donc c'est pour ca que je vous ai demandé le code pour bloquer les pages avec framed_ pour éviter que la frame n'arrete pas de tourner en boucle.
Mais on dirait que ca fait pareil :(
svp j'espère que vous pourrez me donner la solution :(
 
WRInaute passionné
Salut,

Il faut bien lire, pour apprendre ! surtout dans le tutorial. :lol:

Tu y trouveras que le signe $ dans la première partie d'une règle marque la fin de ligne , comme ^ en marque le début :wink:
Or aucune ligne ne se termine par framed_ ,non ?

Donc, ta condition:
Code:
RewriteCond %{REQUEST_FILENAME} !framed_$

devrait s'écrire:
Code:
RewriteCond %{REQUEST_FILENAME} !framed_ 
RewriteCond %{REQUEST_FILENAME} !frame.php$

Dans ce cas, cela ne réécrira ton expression que si le script ne s'appelle pas frame.php ni framed_????

Dan
 
Nouveau WRInaute
Je vais t'expliquer car personne n'a su me dire la solution sauf avec toi je trouve que j'avance vers la solution :arrow:
J'ai un serveur apache 1.3 :
pour qu'une je puisse faire comme multimania ou autre...il faut passer par une frame(tu es d'accord ?).
Donc on m'a dit utilise le mod_Rewrite d'apache.Résultat je me suis retrouvé avec
RewriteEngine on
RewriteRule ^/(.*) http://nomdedomaine.com/frame.php?page=$1
dans mon httpd.conf
puis frame.php on a intégré ceci :
<?
$page = $_GET['page'];
$adresse = 'http://nomdedomaine.com/';
$frame = '<FRAMESET ROWS="100%,*"><frame src="';
$frame2 = '"></FRAMESET><NOFRAMES>';

print("<html><head></head>$frame$adresse$page$frame2<body></body></NOFRAMES>
</html>");
?>

Résultat la frame bouclée sur elle-même(logique quand on y réfléchit)
Donc on m'a dit tu dois créer un système pour éviter de boucler en utilisant le schéma(dans mes permiers messages)
Résultat en ce moment je me retrouve avec:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !framed_
RewriteRule ^/(.*) http://oversurf.serveftp.com/frame.php?page=framed_$1
dans mon httpd.conf mais ca n'a pas l'air de fonctionner.
Tu as une idée pour mon système stp ?
Je trouve qu'il manque pu grand chose pour arriver a la solution.

Merci en tout cas poru tes réponses :wink:
Si tu veux plsu d'infos , n'hésites pas a m'en demander
 
WRInaute passionné
cs a dit:
pour qu'une je puisse faire comme multimania ou autre...il faut passer par une frame(tu es d'accord ?).
En fait, c'est là que je coince, pas trop sur la réécriture.
J'ai un peu de mal à comprendre ce à quoi tu veux arriver, précisément. :oops:

Dans ta règle, tu donnes l'URL complète en second argument (avec http://....) pourquoi ? C'est sur un autre serveur ?
En mettant l'URL complète, tu forces à revenir lire le fichier .htaccess, donc ton flag L] ne sert à rien vu que tu relances une série de réécritures. :wink:


Dan

PS: pour exemple, sur le domaine www.domaine.com, une règle telle que:
Code:
RewriteRule index  index.php [L]
ne bouclera pas , alors que
Code:
RewriteRule index  http://www.domaine.com/index.php [L]
bouclera !

Pourquoi ? c'est simple à comprendre! Dans le cas de la deuxième règle, tu forces à rattaquer la page http://www.domaine.com/index.php comme si "tu venais de l'extérieur" et donc le fichier .htaccess sera de nouveau examiné. Donc tu trouveras une règle que tu exécuteras et retour à la case départ. :lol:
 
Nouveau WRInaute
Je vais t'expliquer plus clairmeent alors :
Je dispose :
D'un serveur sous Linux redhat 9.0, apache v1.3(je cite que l'essentiel).
Ce que je souhaite faire :
Ouvrir un popup a la fermeture de n'importe qu'elle page hébergée sur le serveur en question(Etant donner qu'il a des centaines voir des milliers de pages impossible de les modifier tous.).
Comme personne ne m'avait donné la solution, j'ai demandé a une personne qui s'y connaissait plus.Elle m'a donné la solution, sa solution est d'utiliser une frame(avec le mod_Rewrite d'Apache) :
RewriteEngine on
RewriteRule ^/(.*) http://server/frame.php?page=$1
Dans frame.php,le code que j'ai donné dans mon message précédent : je vais sur http://server/toto/toto.htm, je tombe bien sur la frame.php(et grace au code de la frame.php, toto.htm s'ouvre dans cette frame et moi je peux rajouter le code javascript du popunder dans frame.php.bref j'etais content en ayant cru que cétait la solution.
Tu comprends jusque la ?

Malheuresement un gros problème fut son apparition sur ce système, ca n'arrête pas de faire ca en boucle !!!
Donc j'avais lu dans un tutorial qu'il fallait mettre [L] donc ca donne:
RewriteRule ^/(.*) http://server/frame.php?page=$1 [L]
Mallheuresement idem même problème...Toujours en boucle.
Il a trouvé une autre solution(théoriquement correcte), que j'ai expliqué dans mon précédent message.
Tu m'as donné la solution poru une partie du schéma , avec framed_ mais maintenant je tombe sur une page erreur 404(logique mais comment réglé ce problème ? ce problème est expliqué dans mon précédent message)

Merci
 
Nouveau WRInaute
hetzeld c'est une excellente idée, elle parait logique mais en fin de compte on dirait que non j'ai fais ceci :
httpd.conf :
RewriteEngine on
RewriteRule ^/(.*) http://domaine.com/frame.php?page=$1

frame.php :
<?
$page = $_GET['page'];
$adresse = '/var/www/html/';
$frame = '<FRAMESET ROWS="100%,*"><frame src="';
$frame2 = '"></FRAMESET><NOFRAMES>';

print("<html><head></head>$frame$adresse$page$frame2<body></body></NOFRAMES>
</html>");
?>

Ca n'arrete pas de boucler

:cry:
 
Nouveau WRInaute
hetzeld c'est une excellente idée, elle parait logique mais en fin de compte on dirait que non j'ai fais ceci :
httpd.conf :
RewriteEngine on
RewriteRule ^/(.*) http://domaine.com/frame.php?page=$1

frame.php :
<?
$page = $_GET['page'];
$adresse = '/var/www/html/';
$frame = '<FRAMESET ROWS="100%,*"><frame src="';
$frame2 = '"></FRAMESET><NOFRAMES>';

print("<html><head></head>$frame$adresse$page$frame2<body></body></NOFRAMES>
</html>");
?>

Ca n'arrete pas de boucler

:cry:
 
Nouveau WRInaute
Je suis en train de relire ce que tu as noté, c'est pas con du tout !

Edit: en thérorie ta solution parait exacte mais trop beau pour être vrai :?
J'ai mis : dans httpd.conf
RewriteEngine on
RewriteRule ^/(.*) /var/www/html/frame.php?page=$1 [L]

Et ceci dans frame.php :
<?
$page = $_GET['page'];
$adresse = 'http://server.com/';
$frame = '<FRAMESET ROWS="100%,*"><frame src="';
$frame2 = '"></FRAMESET><NOFRAMES>';

print("<html><head></head>$frame$adresse$page$frame2<body></body></NOFRAMES>
</html>");
?>

:cry:
 
WRInaute passionné
RewriteRule (.*) frame.php?page=$1 [L]

devrait suffire, non ? Pour autant que tu aies la condition juste au dessus, pour ne pas réécrire frame.php

Dan
 
Nouveau WRInaute
:cry: :cry:
Merci pour ton aide hetzeld même si ca ne fonctionne pas :?(ca tourne en boucle)

Je peux pas mettre :
RewriteRule (.*) frame.php?page=$1 [L]
Car je mets ca dans le httpd.conf qui se trouve dans /usr/local/apache/conf.
Donc j'ai mis :
RewriteEngine on
RewriteRule (.*) /var/www/html/frame.php?page=$1 [L]
Et dans frame.php :
<?
$page = $_GET['page'];
$adresse = 'http://server.com/';
$frame = '<FRAMESET ROWS="100%,*"><frame src="';
$frame2 = '"></FRAMESET><NOFRAMES>';

print("<html><head></head>$frame$adresse$page$frame2<body></body></NOFRAMES>
</html>");
?>
résultat : ca boucle toujours.
Faut vraiment que j'ai cette solution , merci
:roll:
 
Discussions similaires
Haut