1

いくつかの単純な.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&amp;type={R:1}&amp;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クエリ文字列が含まれていない場合、同じルールが正しく機能しています。

誰かが助けることができますか?

4

1 に答える 1

0

私はこれをもう一度調べて、自分の解決策を見つけました。書き換えルールに問題はありません。むしろ、IISが提供していないリンク$ _SERVER ['REDIRECT_URL']の1つにあるApacheサーバー変数に依存していました。代わりに、$ _SERVER['REQUEST_URI']が修正しました。 。

変数が一部のサーバーによって提供されない可能性があり、別のサーバーにフォールバックする可能性があるというイベントをすでに予想していたため、これはエラーを生成していませんでしたが、システムを変更して書き換えられたURLを使用するように変更する前に、そのコードが書き込まれました問題を引き起こしていた部分...!

于 2012-07-05T02:01:05.710 に答える