2017-08-09 4 views
0

タイトルが意味を成しているが、さらに説明するにはわかりません。 controller.php。URL - URLに「データ」という単語が含まれているとURLリライトが機能しない

私はしばらくの間この作業をしていましたが、今日はpdfファイルを含む新しいディレクトリがサイトに追加されました。現在、そのディレクトリにはハイパーリンクを介してアクセス可能な2つのファイルがあります。

私がアクセスしています2つの相対パスは、次のとおりです。
http://q360help.joehelp.com/controller.php?Docs/Document_Grid_Filters.pdf


へを想定しているが、現在にリダイレクトされません
http://q360help.joehelp.com/Docs/SERVERDATA.pdf

正しくにリダイレクトhttp://q360help.joehelp.com/Docs/Document_Grid_Filters.pdf
http://q360help.joehelp.com/controller.php?Docs/SERVERDATA.pdf

代わりに、コントローラを経由しないものにアクセスしようとすると予想される404エラーが発生します。私が手動でURLにcontroller.phpを追加すると、ファイルは正常に読み込まれます。なぜ私はそれが正しくリダイレ​​クトされていないのか不思議です。他のディレクトリにある他のすべてのpdfファイルは正常に動作します。さらに、どこにでもURLの中に単語「データ」を有することはこれが破損する原因となっているものであることが表示されますテストの際に:

<?xml version="1.0" encoding="UTF-8"?> 
    <configuration> 
     <system.webServer> 
      <httpRedirect enabled="false" destination="" /> 
      <rewrite> 
       <rules> 
        <rule name="controller redirect" enabled="true" stopProcessing="true"> 
       <match url=".*" /> 
       <conditions> 
        <add input="{HTTP_HOST}" pattern="^(http://)?(www.)?joehelp.com" negate="true" /> 
        <add input="{HTTP_HOST}" matchType="Pattern" pattern="^(http://)?(www.)?q360help.joehelp.com$" ignoreCase="true" negate="false" /> 
        <add input="{URL}" pattern="Data/*" negate="true" /> 
        <add input="{URL}" pattern="Skins/*" negate="true" /> 
        <add input="{URL}" pattern="Resources/*" negate="true" /> 
        <add input="{PATH_INFO}" pattern="^/controller.php*$" negate="true" /> 
       </conditions> 
       <action type="Redirect" url="/controller.php?{R:0}" /> 
      </rule> 
     </rules> 
    </rewrite> 
    <httpErrors errorMode="Detailed" /> 
</system.webServer> 

EDIT:

は、ここに私のweb.configファイルです。これは事ですか?私はこのようなことについて聞いたことがなく、IISのGUIを使ってURLリダイレクトパターンテスターを使用すると、URL にリダイレクトする必要があります。

この時点で私の回避策はファイル名に「データ」が含まれないようにファイル名を変更することですが、なぜこれが起きているのかを知りたいのです。

答えて

1

この行のあなたの問題:

<add input="{URL}" pattern="Data/*" negate="true" /> 

あなたが前方にエスケープされていない使用しているため、この文字列は、あなたの正規表現にマッチします、/スラッシュ:

  • /データ/何か
  • /ドキュメント/ SERVERDATA.pdf
  • /データ
  • /Datasadasas

あなたのソリューションは簡単ですが、このスラッシュをエスケープするだけです。最終的な正規表現は次のとおりです。Data//*

+0

ありがとうございます! – jprice92

関連する問題