#1 Le 29/04/2022, à 15:28
- abecidofugy
[Résolu] insérer lignes dans un fichier .htaccess à partir d’une ligne
Salut,
Je voudrais pouvoir insérer à partir d’une ligne précise d’un .htaccess (susceptible de changer, par màj de mon CMS) un ensemble de cing lignes contenues dans un autre fichier texte. Appelons-le modif.txt
(sinon, on peut utiliser juste une commande)
Les cinq lignes en question sont :
#
# RAJOUT
RewriteCond %{QUERY_STRING} amp.*$
RewriteRule ^(.*) $1 [L,R=301,QSD]
#
(j’ai dû rajouter des # en haut et bas des trois lignes car le forum me les bouffe)
Le point d’insertion pourrait être soit un numéro de ligne (mais risqué, si des lignes avaient été rajoutées dans le .htaccess par la màj de mon CMS) ou plutôt une chaîne de caractère qui serait :
RewriteBase /
Vous avez le code sous le coude ?
Merci, je google encore de mon côté. Je pense que tout peut se jouer avec sed et cat, mais ça demande de doigté ^^
//EDIT : la commande serait incluse dans un json (composer.json pour être précis).
Dernière modification par abecidofugy (Le 30/04/2022, à 18:12)
Hors ligne
#2 Le 29/04/2022, à 16:50
- Postmortem
Re : [Résolu] insérer lignes dans un fichier .htaccess à partir d’une ligne
Salut,
$ more test.txt ajout.txt
::::::::::::::
test.txt
::::::::::::::
dsjfhkjsdfh
dfkjfqlk
kdjsflkjfd
dkfjlkfjd
RewriteBase /
djsfkjfdh
ldskjfhjdqh
lkjdfkl
lkjdflkj
::::::::::::::
ajout.txt
::::::::::::::
#
# RAJOUT
RewriteCond %{QUERY_STRING} amp.*$
RewriteRule ^(.*) $1 [L,R=301,QSD]
#
$ sed '\#RewriteBase /# r ajout.txt' test.txt
dsjfhkjsdfh
dfkjfqlk
kdjsflkjfd
dkfjlkfjd
RewriteBase /
#
# RAJOUT
RewriteCond %{QUERY_STRING} amp.*$
RewriteRule ^(.*) $1 [L,R=301,QSD]
#
djsfkjfdh
ldskjfhjdqh
lkjdfkl
lkjdflkj
Edit :
Si tu veux remplacer la ligne « RewriteBase / » par le contenu du fichier ajout.txt :
sed -e '\#RewriteBase /# { r ajout.txt' -e 'd }' test.txt
Dernière modification par Postmortem (Le 29/04/2022, à 16:57)
Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »
Hors ligne
#3 Le 29/04/2022, à 16:55
- abecidofugy
Re : [Résolu] insérer lignes dans un fichier .htaccess à partir d’une ligne
OMG, génial, je vais tester ça.
Un énorme merci à toi. Belle soirée !
Hors ligne
#4 Le 30/04/2022, à 13:43
- abecidofugy
Re : [Résolu] insérer lignes dans un fichier .htaccess à partir d’une ligne
@Postmortem : dans le fichier .htaccess, j’ai deux lignes presque pareilles :
RewriteBase /drupal
RewriteBase /
Il ne faudrait que la seconde ligne soit touché pour l’insertion.
Je n’ai pas encore testé ta commande, car je suis en train de décommenter des lignes avec sed avant de passer à la suite.
Hors ligne
#5 Le 30/04/2022, à 16:28
- MicP
Re : [Résolu] insérer lignes dans un fichier .htaccess à partir d’une ligne
Bonjour
… Il ne faudrait que la seconde ligne soit touché pour l’insertion. …
Alors, si mon interprétation de cet extrait corresponds à ce que tu voulais écrire,
essaye avec ça :
sed -e '\#RewriteBase \/$# { r ajout.txt' -e 'd }' test.txt
Hors ligne
#6 Le 30/04/2022, à 17:43
- abecidofugy
Re : [Résolu] insérer lignes dans un fichier .htaccess à partir d’une ligne
@MicP : on y est presque. La commande affiche mon text.txt (en fait, .htaccess) avec le rajout au bon endroit, mais ne le sauvegarde pas dans le fichier. De plus, ça me bouffe la ligne RewriteBase /
Dernière modification par abecidofugy (Le 30/04/2022, à 17:46)
Hors ligne
#7 Le 30/04/2022, à 18:01
- Postmortem
Re : [Résolu] insérer lignes dans un fichier .htaccess à partir d’une ligne
Si tu veux modifier le fichier directement, il suffit de rajouter l'option "-i" à sed.
On peut même faire une sauvegarde du fichier d'origine directement :
Pour ajouter le contenu du fichier après la ligne « RewriteBase / » :
sed -i.SAV '\#RewriteBase /$# r ajout.txt' test.txt
Pour remplacer la ligne par le contenu du fichier :
sed -i.SAV -e '\#RewriteBase /$# { r ajout.txt' -e 'd }' test.txt
Ça crée un fichier test.txt.SAV avant de modifier le fichier.
Attention, à chaque fois que tu re-exécutes cette commande, tu recréés un fichier test.txt.SAV à partir du fichier test.txt actuel...
Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »
Hors ligne
#8 Le 30/04/2022, à 18:11
- abecidofugy
Re : [Résolu] insérer lignes dans un fichier .htaccess à partir d’une ligne
@Postmortem : marche parfaitement (la première ligne que tu donnes, celle dont j’avais besoin, mais je note la seconde méthode pour un autre besoin).
Merci à vous deux !
Hors ligne