Modification de $PHP_SELF dans .htaccess

Nouveau WRInaute
Bonjour,

J'utilise les RewriteRules suivants sur un serveur mutualisé :
Code:
RewriteRule .*/ezmediacatalogue/catalogue/(.*)$ /home/inovagor/public_html/ezmediacatalogue/catalogue/$1 [T="application/octstream",S=5]
RewriteRule ^/stats/store/(.*).gif$  /home/inovagor/public_html/ezstats/user/storestats.php [S=4]
RewriteRule ^/static/(.*)$  /home/inovagor/public_html/static/$1 [S=3]
RewriteRule ^/filemanager/filedownload/([^/]+)/(.*)$  /home/inovagor/public_html/ezfilemanager/files/$1 [T="application/oct-stream",S=2]
RewriteRule ^/mediacatalogue/catalogue/(.*)$ /home/inovagor/public_html/ezmediacatalogue/catalogue/$1 [T="application/oct-stream",S=1]
RewriteRule !\.(rm|txt|ico|xml|ram|mpe|mpeg|mpg|mov|gif|css|js|swf|jpg|png|jar|php4)$ /home/inovagor/public_html/index.php
Ca fonctionne bien sauf que la variable $PHP_SELF renvoi systématiquement index.php (idem quelque soit l'url qu'on appelle).
Comment faire pour ne par perdre le contenu de cette variable?
Merci,
Michel
 
WRInaute impliqué
$PHP_SELF ( ou mieux $_SERVER['PHP_SELF'] ) est le nom du script qui est exécuté, si tu veux récupérer l'URI entrée par l'utilisateur, c'est $_SERVER['REQUEST_URI'];
 
Nouveau WRInaute
Merci Shrom,
Mais peux-tu me dire comment je l'utilise $_SERVER['REQUEST_URI'] dans mon .htaccess pour l'URL soit renvoyée correctement lors de l'appel de la page?
 
WRInaute impliqué
Il n'y a rien à rajouter dans ton .htaccess, c'est dans ton script PHP que tu lis cette variable.
 
Nouveau WRInaute
Le pb c'est que les deux variables sont utilisées dans le code php (REQUEST_URI et PHP_SELF). Et ce n'est pas moi qui gère le code.
J'essai donc de me débrouiller avec le .htaccess et de comprendre pourquoi mes rewriteRules renvoient toujours /index.php dans $_SERVER['PHP_SELF'].
 
WRInaute passionné
Parce que PHP_SELF renvoie le script qui est exécuté et c'est index.php dans ton cas

exemple:
ce n'est photo.php le script qui est executé, c'est le script par defaut du repertoire vrai-chemin et en general, c'est index.php .

Code:
RewriteRule ^/chemin-virtuel/photo.php$ /home/vrai-chemin/ [L]
 
Nouveau WRInaute
Dans ce cas, comment je peux indiquer dans mon .htaccess que la page par défaut est /home/inovagor/public_html/index.php ?

Si je peux faire ça (et si j'ai compris ce que tu veux dire Suede) je pourrais alors modifer la règle :
RewriteRule !\.(rm|txt|ico|xml|ram|mpe|mpeg|mpg|mov|gif|css|js|swf|jpg|png|jar|php4)$ /home/inovagor/public_html/index.php
Je vois pas encore exactement comment mais c'est l'idée non?
 
WRInaute passionné
Bah a priori, c'est la page par defaut. J'ai pas tout compris ce que tu veux faire.

Si tu as ca :
Code:
RewriteRule !\.(rm|txt|ico|xml|ram|mpe|mpeg|mpg|mov|gif|css|js|swf|jpg|png|jar|php4)$ /home/inovagor/public_html/index.php

Tu redirigeras toujours vers cet index.php et ce sera cet index.php qui sera mis dans le php_self.


François
 
Nouveau WRInaute
Merci François pour ton aide car je ne m'en sors pas.

En fait pour résumer la situation. J'ai migré un site d'un serveur dédié vers un mutualisé.
Sur le dédié, les RewiteRules étaient dans le <virtualhost>. Mais sur le mutualisé je n'ai pas accès aux fichiers de configurations d'apache. J'utilise donc un .htaccess poue les ré-écritures.

La règle que tu cite renvoie (comme souhaité) sur la page index.php mais le problème c'est que php_self contient toujours /index.php alors que sur le servuer dédié cette variable contient l'information nécessaire à la page index.php pour afficher l'article souhaité. Par exemple /bienvenue.

Tu vois mon problème?
Michel
 
Discussions similaires
Haut