Répète après moi: "je suis un script PHP"...
Par davux, vendredi 27 août 2004 à 12:02 :: geekeries :: #330 :: rss
Alors toujours dans la série "je-veux-faire-des-trucs-comme-le-serveur-mais-je-suis-pas-l'admin-et-l'admin-c'est-ze"...
Ce soir je viens de me passer de mod_rewrite, un peu cradement j'en conviens, mais ça aurait pu être pire.
L'idée, c'est que normalement demain je déplace mon blog sur le poivron (merci Lunar). Mais comme j'aime pas partir sans laisser d'adresse, je me suis dit que je pourrais faire une redirection 301 (Moved permanently). Le problème c'est que je suis pénible, et que je veux que toutes les URL genre http://etudiants.insia.org/~dammouia/blog/blabla/coucou/toto soient transformées en http://davux.asocial.info/blog/blabla/coucou/toto. Donc là normalement, on se dit fastoche, un coup de mod_rewrite et c'est réglé. Juste faudrait avoir accès au serveur pour ça, donc pas de rewrite (c'est ballot hein). Alors je pourrais faire une page 404 puis un 301 par-dessus, mais moi je veux pas une 404, je veux un vrai 301. Na.
Donc.
Pour commencer, un truc affreux: un fichier .htaccess à la
racine de mon répertoire (dans /~dammouia). Dedans, la ligne
"ForceType application/x-httpd-php". Le problème
c'est que du coup tous les fichiers vont être servis comme si
c'était du PHP. Pour les fichiers texte c'est pas grave, tant qu'il
n'y a pas de balises <? et ?> ils sortiront du préprocesseur
PHP inchangés.
Le problème c'est pour les images et toutes ces conneries. Puis
même, autant éviter de tout filer à PHP (CSS, HTML, youpi tiens
mange petit PHP, ça t'occupera). Donc je rajoute dans chacun des
sous-répertoires (oui c'est super crade) un fichier .htaccess si
besoin, avec la ligne: "ForceType none", qui annule le
ForceType du répertoire parent. Ça ne résoud bien sûr pas le
problème pour les fichiers dudit répertoire parent (/~dammouia),
mais c'est mieux que rien (et de toute façon celui-ci ne contient
que des fichiers texte et des sous-répertoires, j'ai du bol).
OK c'est super, mais pourquoi forcer les fichiers à être lus comme du PHP ? Bah c'est ça la ruse. C'est parce que dans ~dammouia je mets un fichier nommé "blog" (enfin newblog ce soir, tant que le répertoire blog existe), qui est en fait un script PHP. J'aurais pu utiliser AddType, mais cette directive se base sur l'extension du fichier, donc hé ben oui c'est con mais là ça marche pas vu qu'il n'y a pas d'extension. C'est con la vie.
Donc voilà, le plus gros du boulot est fait, le script "blog" intercepte toutes les URL en /~dammouia/blog/*.
Après il est très bête: il récupère la valeur de $_SERVER['PHP_SELF'] (par
exemple "/~dammouia/blog/blabla/coucou/toto"), en extrait
la partie intéressante ("blog/blabla/coucou/toto") et la colle
derrière le nouveau préfixe (ça devient donc
"http://davux.asocial.info/blabla/coucou/toto"). Ensuite il envoie
les headers et dit au browser de fermer la connexion (ça c'est pour
empêcher IE de paniquer et de hurler au 404):
header("HTTP/1.1 301 Moved Permanently");
header("Location: $new"); # où $new est la nouvelle adresse
header("Connection: close");
Et voilà c'est tout. (super la chute)
Edit: Lunar vient de me signaler qu'on peut utiliser le mod_rewrite.... dans les .htaccess ! Bon ben tant pis, on va dire que sparave.
Commentaires
1. Le vendredi 27 août 2004 à 10:30, par Mr Meuble :: site
2. Le vendredi 27 août 2004 à 14:36, par Emmanuel :: site
3. Le vendredi 27 août 2004 à 15:09, par davux :: site
4. Le samedi 28 août 2004 à 02:56, par Lunar :: site
5. Le samedi 28 août 2004 à 02:57, par Lunar :: site
6. Le mardi 31 août 2004 à 15:13, par davux :: site
7. Le mardi 31 août 2004 à 17:46, par jadawin :: site
Ajouter un commentaire
Les commentaires pour ce billet sont fermés.