簡體   English   中英

URL重寫不適用於IIS 7

[英]URL Rewriting not working on IIS 7

我在IIS 7上部署了一個PHP站點並使用URL重寫模塊,但我的重寫規則不起作用。 以下是我想在瀏覽器中顯示的實際網址和網址:

瀏覽器URL: http//mydomain.com/myfolderhttp://mydomain.com/myfolder/anytext

實際網址: http//mydomain.com/myfolder/myfile.html

以前我在Wamp服務器上使用mod重寫和.htaccess,下面是.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>

.htaccess規則實際上做了兩件事。 首先,它確保以/ (斜杠)結尾的請求被重定向到URL而沒有結束斜杠。 第二條規則將對所有不存在文件的請求重寫為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>

經過一番點擊並嘗試這個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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM