1

我们有很多文件包含对我们网站上资源的图像/静态文件引用。当我们将这些文件移动到 S3 托管时,我正在编写一个脚本来读取我们的每个 ASP 文件,替换每个引用,以便每个引用都指向一个全局定义的变量,并将这些更改重写到文件中,这样我们就不会不必手动更新所有这些文件!

这适用于实际代码中的引用。

例如。

Response.Write "<img src=""http://www.site.com/images/image.gif"">"

变成

Response.Write "<img src=""" & s3BucketName & "/images/image.gif"">"

但是当涉及到替换这样的代码时:

<script src="/javascript/script.js">

这更困难 - 因为我们必须将 ASP 分隔符 <%= %> 放置在它周围的全局变量周围。

例如。

<script src="<%=s3BucketName%>/javascript/script.js">

因为脚本分隔符实际上会停止它们所在的页面并生成错误,这就是我发现的困难。URLencoding <%=s3BucketName%> 字符串,并写入,只是写入编码文本(ASP 无法使用),不会转换为我想要的。

任何想法都非常感激。

谢谢,亚当

4

2 回答 2

2

好的,我想出了一个解决方案,似乎可行。如果你找到更好的,请评论。

textToReplace = "src="""& chr(60) & chr(37) & chr(61) & "s3BucketName" & chr(37) & chr(62) & "/javascript/script.js"

基本上 <%= 和 %> 的每个符号都被转换为 chr() 值。

于 2012-08-06T20:41:19.140 回答
1

您可以在页面的 head 部分使用 basetag,然后您可以像脚本示例一样单独保留相对 url,您可以将此技术与 peedeeaay 建议的方法结合使用。

<base href="http://www.s3bucketdomain.com/directory/" />
于 2012-08-08T11:14:12.423 回答