我在HTML
中存储了很多DB
内容
我在许多动态页面打印了
例如
// returned from DB
$contentHTML =
'
<h1>Photo Number 1</h1>
<p>description1</p>
<p><img src="../images/1.jpg"/></p>
<h1>Photo Number 2</h1>
<p>description2</p>
<p><img src="../images/2.jpg"/></p>
';
// Print HTML content
echo $contentHTML;
我的问题是
我的HTML代码包含images URLs
我当前的图像文件夹(图像)在应用程序服务器
但未来预计会更改此文件夹
因此,替换所有图像网址
将是一项非常复杂和艰巨的任务然后
任何想法或技巧
如何在DB中存储的HTML内容中嵌入图像的动态URL
或者如何使其可配置?
答案 0 :(得分:1)
我通常会为这种场景制作一个临时脚本。
第1步:
用动态已知变量替换所有硬链接。
../images/ to [[PUBLIC_PATH]][[IMG_DIR]]
第2步:
使用前,将实际的服务器地址和图像目录替换为您添加的变量。
E.g。
contentHTML = NDatabase::getAssoc("select myField from myTable");//yada yada
$contentHTML =
'
<h1>Photo Number 1</h1>
<p>description1</p>
<p><img src="[[PUBLIC_PATH]][[IMG_DIR]]/1.jpg"/></p>
<h1>Photo Number 2</h1>
<p>description2</p>
<p><img src="[[PUBLIC_PATH]][[IMG_DIR]]/2.jpg"/></p>
';
$myNewServerPath = "http://www.mysite.come/en/";
$myPublicFolder = "{myNewServerPath}public/";
$myImgDir = "img"
$newContent = str_replace(array("[[PUBLIC_PATH]]","[[IMG_DIR]]") , array($myPublicFolder,$myImgDir ) ,$contentHTML )
之后,您可以更新数据库,也可以只使用代码。
就个人而言,我有一个文件,其中包含动态生成的常量列表,以获取站点名称,站点URL,站点子文件夹等。
define("CURR_PATH","http://$_SERVER[SERVER_NAME]/");//
猜猜你有这个想法。
答案 1 :(得分:-1)
您可以使用mod_rewrite
重写网址以指向新位置。
例如:
RewriteRule ^images/(.*)$ new-images-folder/$1 [NC,L]