我试图将一些简单的.htaccess重写转换为web.config xml;一切都很好,但是我遇到了一个涉及查询字符串的问题。将.htaccess转换为web.config时查询字符串追加
这里是的.htaccess规则:
RewriteRule ^table/([a-zA-Z0-9\-_]+)/delete/([^/\.]+)$ table-index.php?mode=delete&type=$1&id=$2 [QSA,L]
这是我如何把它翻译:
<rule name="delete">
<match url="^table/([a-zA-Z0-9\-_]+)/delete/([^/\.]+)$" ignoreCase="true" />
<action type="Rewrite" url="table-index.php?mode=delete&type={R:1}&id={R:2}" appendQueryString="true" />
</rule>
从本质上讲,我做了这个相同的,因为我有与所有其他的(工作)规则,但这一个不是打球。唯一的区别是这个规则在.htaccess中有一条[QSA]
指令,我将其转换为appendQueryString="true"
。
规则不破IIS,它只是不工作,要么 - 应该怎样为显示:
http://my.site/admin/table/mailing-list/delete/1?confirm=true
被显示为
http://my.site/admin/table-index.php?confirm=true
一个缺少相当多的重要的信息并导致事情不会发生......当URL中没有?confirm = true查询字符串时,同样的规则正常运行。
任何人都可以协助吗?
很高兴你的工作。我尝试使用您的正则表达式,但它只适用于以'table /'开头的文本,所以任何网址都无法使用它。 – TWickz
是的,这是针对不同目的的一些规则之一,在这种特殊情况下 - 它只是用于某些URLS。我认为正则表达式应该工作,因为它在htaccess中起作用,所以起初不清楚哪里出了问题。去证明,有时用新鲜的眼睛看东西是一种方式! – Codecraft