Je dois modifier les zones d'un modèle et produire un fichier .htaccess
. Voici une partie du modèle pour le fichier .htaccess
. Les [NPAC_TMP:~core_dir]
sont les pièces qui se remplacent:Regex ne correspond pas comme prévu
RewriteCond %{REQUEST_URI} !^[NPAC_TMP:~core_dir]/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ [NPAC_TMP:~core_dir]/$1
RewriteCond %{HTTP_HOST} ^(www.)?localhost:8888$
RewriteRule ^(/)?$ [NPAC_TMP:~core_dir]/index.php [L] ###DEFECTIVE LINE
Ruby Script:
template_tag = line.match(/\[NPAC_TMP:~(.*)\]/).to_s
param = template_tag.split("~")[1][0..-2]
if(param == "core_dir")
line[template_tag]= CONFIG[:core_dir]
temp_file.puts line
end
Lorsque le script est exécuté, tous les obtenir correctement remis en place, sauf le dernier:
RewriteCond %{REQUEST_URI} !^core/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ core/$1
RewriteCond %{HTTP_HOST} ^(www.)?localhost:8888$
RewriteRule ^(/)?$ [NPAC_TMP:~core_dir]/index.php [L] ###DEFECTIVE LINE
Ce n'est pas le seul fichier de modèle dans lequel cette méthode s'exécute, et dans tous les autres fichiers, il fonctionne correctement où tous les éléments sont remplacés.
Aux fins de dépannage, j'ai copié le RewriteCond %{REQUEST_URI} !^[NPAC_TMP:~core_dir]/"
et l'ai placé directement sous la ligne défectueuse. Cet élément ajouté a été mis à jour correctement, mais pas celui qui le précède.
Je puis placé une copie de la ligne défectueuse directement en dessous ainsi et a reçu deux lignes défectueuses, ce qui me porte à croire que ses quelque chose de la manière que cette chaîne complète est structurée qui jette le REGEX off: RewriteRule ^(/)?$ [NPAC_TMP:~core_dir]/index.php [L]
Toute aide serait grandement appréciée. Aussi, si vous avez des suggestions sur la façon de raccourcir ou d'améliorer la partie Ruby du script, je suis tout ouïe.
Si vous voulez ce qui se passe entre le '~' et le ']', vous pouvez juste utiliser 'line.match (/../) [1]' au lieu de '.to_s', pour obtenir ce qui est entre parenthèses dans votre regex - le premier "groupe" ('String # match' renvoie un objet [MatchData] (http://www.ruby-doc.org/core-2.0/MatchData.html) qui vous donne tous les groupes de votre match). Ensuite, vous n'avez pas à vous tromper avec des trucs «split» et épissures de cordes. –
Grand appel. Je vous remercie. – voodooGQ
np :) J'essaie d'éviter autant que possible de manipuler des cordes à un niveau aussi bas que possible et je pense que dans la plupart des langues où ce n'est pas obligatoire, c'est une bonne pratique générale. c'est plus facile à maintenir et plus facile à comprendre pour les autres lecteurs. –