Peut-on faire une requête SQL et utiliser du PHP dans un .htaccess ?

WRInaute passionné
Bonjour,

C'est peut-être une question farfelue, mais bon, je souhaite savoir si l'on peut effectuer une requête SQL dans un fichier .htaccess

En fait j'ai 800 pages à "rewriter" plus d'autres qui vont s'ajouter.
Je ne peux pas régler le problème en une ligne, c'est un script spécial, je ne peux pas le modifier.
Je dois écrire une règle pour chaque page (transformer "?record=11" en "nom-page.php" par exemple)
Je peux faire une requête pour avoir les 800 règles, puis les copier/coller et enfin ajouter au fur et à mesure les nouvelles règles pour les nouvelles pages. Mais c'est crade et fastidieux.

Alors je me demande si je ne pourrais pas glisser dans le .htaccess une requête SQL qui permette à l'aide d'une boucle while "d'écrire" automatiquement toutes les règles d'url-rewriting pour chaque page. :idea:

Qu'en pensez-vous :?:
 
WRInaute accro
Je confirme : ce n'est pas possible.
En revanche tu peut générer le contenu du fichier en PHP et écrire son contenu dans le fichier .htaccess.
 
WRInaute passionné
Je vais voir ça, merci pour ta réponse dmathieu.

Sinon, si dans le .htaccess je balance un ou deux milliers de lignes pour réécrire l'URL de chaque page, est-ce que ça va faire souffrir le serveur et ralentir l'affichage des pages ?
 
WRInaute accro
Inévitablement oui. Il faut le temps que Apache les lise.
Mais sauf si tu as 100k vu/j, c'est le genre de choses qui prends suffisamment peu de temps pour être négligée.
 
WRInaute impliqué
Pense qu'Apache relis tous les fichiers .htaccess présents dans l'arboresence à chaque requête... donc oui tu peux vite le faire souffrir :mrgreen:
 
WRInaute passionné
dmathieu a dit:
Je confirme : ce n'est pas possible.
En revanche tu peut générer le contenu du fichier en PHP et écrire son contenu dans le fichier .htaccess.

dmathieu, tu n'aurais pas une url sous la main qui explique comme procéder... Si je comprend bien pour écrire un "htaccess" avec "php" ?

Parce que pour réécrire, par exemple, monhtaccess.php en ".htaccess", il faut déjà utiliser un htaccess pour le dire, qui se trouve dans notre répertoire racine... Du coup je deviens fou à essayer de comprendre comme on fait 8O :cry:
 
WRInaute impliqué
Le principe dont te parle "dmathieu" est de créer ton fichier .htaccess par un script PHP.
Tu fais simplement les opérations en PHP qui te permettent de récupérer les bonnes URLs etc., et tu enregistre ça dans un fichier qui s'appelle .htaccess avec la syntaxe qui va bien. PHP sait faire des opérations sur les fichiers...
 
WRInaute accro
@FloBoati exactement.

@1-sponsor
Code:
$content = "RewriteRule ^mapage$ mapage.php [L]";
file_put_contents('.htaccess', $content);
 
WRInaute passionné
1-sponsor a dit:
dmathieu a dit:
@FloBoati exactement.

@1-sponsor
Code:
$content = "RewriteRule ^mapage$ mapage.php [L]";
file_put_contents('.htaccess', $content);

Merci, on ne peut plus clair ! :mrgreen:

Attendez, ça a l'air intéressant votre truc, mais je n'ai pas tout compris.

Le code PHP là, je le place où ? En haut du header ? Et il fait quoi ce code ? Il génère la ligne qui devrait se trouver dans le .htaccess ?

Qu'est-ce qui se passe si j'écris cela en haut de header.php :
Code:
$content="RewriteRule ^([a-z-]+)\.htm$  /?article=$1 [QSA,L]";
file_put_contents('.htaccess', $content);

Et il va y avoir des histoires de chemin de fichier avec la fonction file_put_contents(), non ?
 
WRInaute accro
Tu place ce code php dans ton interface d'administration, lorsque tu crée une page par exemple.
Il modifie le fichier .htaccess une seule fois, quand une url est créée ou modifiée.

Surtout pas à chaque chargement de page.
 
WRInaute passionné
Ah d'accord, mais au final, dans le .htaccess, il y aura tout de même autant de ligne qu'il n'y a d'url à réécrire. C'est ça ?

Ce n'est pas un système automatique, comme avec un .htaccess classique.

C'est juste pour éviter de modifier et d'uploader manuellement le .htaccess à chaque nouvelle page créée. J'ai bon ?
 
WRInaute accro
C'est exactement ça.
Il est impossible de mettre un quelconque langage serveur (php, python, ruby ou autre) dans le .htaccess.
 
WRInaute passionné
Ok, merci pour le tuyau alors, je vais voir si je décide ou pas d'utiliser cette soluce.

Merci à toi et aux autres aussi en tout cas :)
 
Discussions similaires
Haut