いくつかの単純な.htaccessの書き換えをweb.configxmlに変換しようとしています。それらのほとんどはすべてうまくいっていますが、クエリ文字列を含むもので特に問題があります。
.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>
基本的に、私は他のすべての(作業中の)ルールと同じようにこれを行いましたが、これはボールをプレーしていません。唯一の違いは、このルールには、XML用[QSA]
に変換した.htaccessの命令があることです。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クエリ文字列が含まれていない場合、同じルールが正しく機能しています。
誰かが助けることができますか?