[英]The rewrite provider error in an outbound rewrite rule
我正在支持一個包含 many.html 文件的網站。 該站點在 Windows 2016 上的 IIS 10 中運行。現在我被要求在<head>
之后立即插入以下 Google 跟蹤代碼管理器代碼。
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'xyz.start':
new Date().getTime(),event:'xyz.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/xyz.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','xyz-ABCDEFG');</script>
顯然,將這段代碼手動插入到每個 html 文件中在很多方面都是一個壞主意。 我正在嘗試使用出站規則來完成這項工作。 基本上,這個想法是用<head>
<head>
和上面的代碼替換響應中的 <head>。 我通過 IIS 中的 Edit Outbound Rule 界面輸入了它,以下是我保存后在 web.config 中得到的內容:
<rule name="GTM head" preCondition="IsHTML">
<match filterByTags="None" pattern="<head>" />
<action type="Rewrite" value="<head><script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'xyz.start':new Date().getTime(),event:'xyz.js'});var f=d.getElementsByTagName(s)[0],j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src='https://www.googletagmanager.com/xyz.js?id='+i+dl;f.parentNode.insertBefore(j,f);})(window,document,'script','dataLayer','xyz-ABCDEFG');</script>" />
</rule>
但是,我在編輯出站規則界面中保存時在 IIS 中看到了此錯誤消息。
The rewrite provider "w[l]=w[l]||[];w[l].push({'xyz.start'" does not exist.
如果我加載 HTML 頁面,瀏覽器會顯示此錯誤:
HTTP Error 500.52 - URL Rewrite Module Error.
The page cannot be displayed because an internal server error has occurred.
非常感謝任何幫助或輸入。
更新 1
在這篇文章之前,我查看並嘗試了這篇文章(我的情況沒有示例)
我也閱讀並嘗試了這篇文章
我無法讓它工作。 基本上,不知道如何使它工作。
更新 2
我還被要求在<body>
標記之后立即插入這段代碼,並且我能夠成功使用出站規則。
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=xyz-ABCDEFG"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<rule name="GTM body" preCondition="IsHTML">
<match filterByTags="None" pattern="<body(\s*[^>]*)>" />
<action type="Rewrite" value="<body{R:1}><noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-WR7TNHP" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>" />
</rule>
做了更多閱讀並找到了這篇文章:
https://blogs.iis.net/danielvl/how-to-escape-curly-brackets-in-url-rewrite-rule
基本上,解決方案是用這個 function 替換打開{
:
{UrlDecode:%7B}
希望這對將來的人有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.