Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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

abecidofugy a écrit :

… 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