J'utilise un éditeur WYSIWYG dans un petit cms. Il permet aux utilisateurs de télécharger des fichiers, des images, etc. Si j'ajouter une image nommée dog.jpg, dans la source, je vais:Réécrire les URL de l'utilisateur soumis HTML
<img src="/myweb/userfiles/images/dog.jpg" />
Je peux enregistrer ce à une base de données et de l'utiliser plus tard sur une page, jusqu'à ce que Je déplace mon site vers un domaine en direct. Myweb est un répertoire virtuel dans IIS.
"/" pointe vers root, dans ce cas localhost, donc je dois utiliser "/ myweb". Cependant quand je télécharge le site au serveur et copie la base de données là, tous les liens seront cassés, parce qu'il n'y a aucun dossier "myweb" sur le serveur.
Mon idée était de remplacer "/ myweb" par save avec une chaîne vide. Je dois également remplacer l'url complète, que l'éditeur crée pour certains fichiers. Sur l'affichage je devrais ajouter le répertoire d'application correct. Je voudrais probablement enregistrer les deux versions dans la base de données, et seulement sur le changement de serveur force afficher la version à mettre à jour.
Maintenant, je suis venu avec:
p = p.Replace("href=\"" + fullUrl, "href=\"").Replace("src=\"" + fullUrl, "src=\"").Replace("href=\"" + partialUrl, "href=\"").Replace("src=\"" + partialUrl, "src=\"");
Ce qui est laid, difficile à maintenir et inefficace. Je suppose que la meilleure approche serait d'utiliser regex, mais je ne sais pas comment le faire.
Ma question est, quelqu'un peut-il recommander un bon article, blog/forum sur ce sujet? Si vous avez d'autres solutions, super.
Votre code est ce que je cherchais. Votre conseil pour le site Web avec un port alternatif est une vraie solution, cependant :) Bien que, je pense toujours là est la possibilité pour l'utilisateur d'avoir besoin de ce nettoyage? – Milan
Vous avez mentionné que vous aviez quelques chemins "complets" que vous deviez nettoyer de toute façon (je devine l'URL absolue ou un chemin de fichier).Pour un côté déjà construit qui a déjà des problèmes avec le fait de ne pas être root je ne le regarde pas à moins qu'il y ait une exigence claire de déployer vers un chemin non racine en production ... – eglasius
... le site pourrait contenir des liens, des ressources (images/css/scripts) qui se cassent lors d'un déploiement dans un répertoire non root - j'évite les problèmes si je le construis, mais quand il y a déjà quelque chose en place cela peut signifier beaucoup de mises à jour – eglasius