2013-01-09 75 views
0

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

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

實際URL:http://mydomain.com/myfolder/myfile.html

以前我是用國防部重寫.htaccess的WAMP服務器和下方爲進行了在.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> 

回答

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> 
1

.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> 
+0

這個web配置是顯示500.19內部服務器錯誤。可能是因爲定義了兩個規則標籤。我在過去也遇到過這個錯誤。 –

+0

這兩個''標籤應該合併在一個「」部分,然後它應該可以工作。 –