如何更改前缀EPiServer添加到HTML中的src属性
我有一个HTML的片段,它包含在模板化EPiServer页面的属性中,该HTML内有一个img
标记,其中包含一个相对URL。如何更改前缀EPiServer添加到HTML中的src属性
当页面被查看时,我可以看到标签的src属性已被改为具有前缀/ProjectName/Templates/Pages/
。
据我所知,这是被由存储旁边的ASPX模板(这活确实确实在Templates\Pages
)的正确定位其目的是HTML片段的部分是HtmlRewriteToExternal
使图像文件,但是图像进行在我的情况下,实际上存储在PageFiles/nnn/
(其中nnn实际上是父页面的PageFolderID
),我需要以某种方式使改变的html反映出来。
我创建了一个继承自FriendlyUrlRewriteProvider
的类并注册了我的类。我可以调试应用程序,并通过重写的方法观察请求,但是我仍然无法看到添加前缀的位置,或者知道如何更改它。我可以将src标记更改为我的类中的不同相对路径,但前缀仍在添加。
我已经阅读了关于EPiServer url重写的所有内容,但无法找到任何提示该前缀被添加到什么位置的提示,或者如何停止或更改它。
事情我已经阅读:
- http://blogs.interakting.co.uk/post/File-Extensions-and-URL-Rewriting-in-EPiServer.aspx
- http://blog.fredrikhaglund.se/blog/2008/05/07/disable-episerver-urlrewriter-interference/(这可能包含我正在寻找的答案)
- http://labs.kaliko.com/2010/11/prevent-episerver-urlrewrite.html
- http://sourcecodebean.com/archives/episerver-friendly-urls-for-paginated-pages-and-why-the-asplinkbutton-must-die/510
- http://tedgustaf.com/en/blog/2008/7/create-a-custom-url-rewrite-provider-for-episerver/
- http://tedgustaf.com/en/blog/2011/4/publishing-plain-html-pages-in-episerver/
- http://sdk.episerver.com/library/cms5/Developers%20Guide/Friendly%20URL.htm
- http://sdk.episerver.com/library/cms6.1/html/T_EPiServer_Web_UrlRewriteModule.htm
- http://labs.episerver.com/en/Blogs/Ruwen/Dates/111218/112064/112154/
- http://world.episerver.com/Blogs/Magnus-Strale/Dates/2011/3/Do-we-really-need-yet-another-HTML-parser/
- http://world.episerver.com/Blogs/Yugeen-Klimenko/Dates/2011/6/How-EPiServer-URL-Rewriting-works/
- http://world.episerver.com/Modules/Forum/Pages/Thread.aspx?id=46869
我打开了什么,我其实是想做到完全不同的解决方案,这是一个如下:
我有多个独立的静态html文件和相关的图像/ css/js文件,我试图用EPiServer存储/发布。每一组的结构看起来像
- setfolder/
- htmlfileA.html
- htmlfileB.html
- CSS/
- 风格。CSS
- 图像/
- piccy1.png
- piccy2.png
- JS/
- magic.js
我想我应该为这个集合创建一个EPiServer页面,然后为每个html文件创建一个子页面,将这些文件中的html存储在子页面的属性中。目前,我将相关的静态文件存储在相关的setfolder页面的PageFiles中,因为这似乎是放置它们时逻辑上最一致的地方。
如果没有在您面前看到它,就很难提供最好的解决方案。但是一个简单的方法是在将属性打印到页面时更改HTML代码。
喜欢<%= ChangeRelativeLinks(当前页[“HtmlCode”]作为字符串)%>
而在ChangeRelativeLinks(串htmlCode)你改变为相对链接和图像到pagedir一个正则表达式或类似绝对路径。
这是一个好主意,我没有想到这一点。谢谢! – 2012-04-02 09:19:30
将相对链接更改为绝对链接后,即将发送页面到客户端时发生的html重写将忽略它们。好极了!这里是我生成的绝对路径前缀:'ResolveUrl(String.Format(“〜/ PageFiles/{0} /”,GetPage(CurrentPage.ParentLink)[“PageFolderID”]));' – 2012-04-03 09:23:40
更多的代码隐藏我'已使用可在这里:https://gist.github.com/2291964(随意复制代码粘贴到您的答案) – 2012-04-03 13:27:56
如果您将图像存储在PageFiles这是一个虚拟路径提供程序,您应该能够简单地通过使用API获取您的文件的网址。在PageData类(即您的模板中的CurrentPage)中,您有一个名为GetPageDirectory()的方法,它可以获取页面文件夹。
您可以在此处详细了解VPP概念:
无需对URL重写提供商为了这个,我想。
感谢您的回答。我已经使用了GetPageDirectory(),所以我知道你的意思,我甚至创建了该扩展https://gist.github.com/2205546/5258de36e14b6487d38978a6e1e05f93ce4a8c89#L37我遇到的问题是整个html块将在一个由用户设置的html页面属性,因此我没有机会直接设置src属性。因此,虽然我可以通过编程方式找到图像的路径,但我无法弄清楚如何将该路径应用于src属性,或重定向浏览器的请求。摆弄html重写器是我目前最好的猜测。 – 2012-03-29 21:37:15
有人有类似的问题,没有解决http://world.episerver.com/Modules/Forum/Pages/thread.aspx?id=41534 – 2012-03-30 09:17:50
另一个未回答的问题:“阻止UrlReWrite为特定的页面类型”http: //world.episerver.com/Modules/Forum/Pages/thread.aspx?id=19395 – 2012-03-30 09:52:16
我向EPiServer论坛发布了类似的问题。 http://world.episerver.com/Modules/Forum/Pages/Thread.aspx?id=57845 – 2012-03-30 10:26:54