0

PHPサイトをIIS7に展開し、URL書き換えモジュールを使用していますが、書き換えルールが機能していません。以下は、実際のURLとブラウザに表示したいURLです。

ブラウザのURL: http: //mydomain.com/myfolderまたはhttp://mydomain.com/myfolder/anytext

実際のURL: http: //mydomain.com/myfolder/myfile.html

以前は、Wampサーバーで.htaccessを使用してmod rewriteを使用していました。以下は、.htaccessファイルで定義された作業ルールです。

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_URI} ^(.+)/$

RewriteRule ^(.+)/$  /$1 [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^.*$ myfile.html [L]

以下は機能していない私のweb.configファイルです。私の問題を解決するために提案して助けてください

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
    <rewrite>
        <rules>
            <rule name="Rewrite to myfile.html1">
                <match url="^(.+)/$" />
                <action type="Rewrite" url="/$1" />
            </rule>
        </rules>
        <rules>
            <rule name="Rewrite to myfile.html2">
                <match url="^.*$" />
                <action type="Rewrite" url="myfile.html" />
            </rule>
        </rules>
    </rewrite>
    </system.webServer>
</configuration>
4

2 に答える 2

1

.htaccessルールは実際には2つの異なることを行っています。まず、/(スラッシュ)で終わるリクエストがスラッシュなしで終了するURLにリダイレクトされることを確認します。そして、2番目のルールは、存在しないファイルに対するすべての要求をに書き換えますmyfile.html

これは機能するはずです(テストされていません):

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
    <rewrite>
        <rules>
            <rule name="Removing trailing slash" stopProcessing="true">
                <match url="^(.+)/$" />
                <conditions>
                    <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                </conditions>
                <action type="Redirect" url="/{R:1}" />
            </rule>
        </rules>
        <rules>
            <rule name="Rewrite to myfile.html" stopProcessing="true">
                <match url="^.*$" />
                <conditions>
                    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                </conditions>
                <action type="Rewrite" url="/myfile.html" />
            </rule>
        </rules>
    </rewrite>
    </system.webServer>
</configuration>
于 2013-01-10T12:01:52.697 に答える
1

いくつかのヒットと試行の後、この web.config が機能しました

<?xml version="1.0" encoding="UTF-8"?>
   <configuration>
      <system.webServer>
         <directoryBrowse enabled="true" />
         <rewrite>
            <rules>
               <rule name="Rule1" stopProcessing="true">
                  <match url="^(.+)/$" />
                  <conditions>
                     <add input="{URI}" pattern="^(.+)/$" />
                     <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                  </conditions>
                  <action type="Rewrite" url="/$1" />
               </rule>
               <rule name="Rule2" stopProcessing="true">
                  <match url="^myfolder/.*$" />
                  <conditions>
                     <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                  </conditions>
                 <action type="Rewrite" url="myfolder/myfile.html" />
              </rule>
           </rules>
        </rewrite>
     </system.webServer>
  </configuration>
于 2013-01-10T12:09:57.577 に答える