[英]URL Rewriting not working on IIS 7
我在IIS 7上部署了一個PHP站點並使用URL重寫模塊,但我的重寫規則不起作用。 以下是我想在瀏覽器中顯示的實際網址和網址:
瀏覽器URL: http : //mydomain.com/myfolder或http://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.