我有一個在linux服務器上開發的symfony2項目,並且由於我的控制之外的原因,它已經將它遷移到了Windows服務器(不幸!)。除了url重寫之外,這一切都可以正常工作。我嘗試使用IIS URL重寫模塊,但在轉換大部分規則時失敗(並且我並未保存其失敗的列表)。如何將htaccess規則轉換爲IIS7/Symfony的web.config?
它大多工作正常,但app.php仍然存在於所有不應該是的URL的開始。所以這些網址是domain.com/app.php/correct/path時,他們應該是domain.com/correct/path
不幸的是,我很少使用Windows服務器,我不擅長web.config語法,所以如果任何人都可以建議從Windows服務器上的所有網址的開始刪除app.php缺少的東西,那將不勝感激!
原來的.htaccess文件是:
DirectoryIndex app.php
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
RewriteRule ^(.*) - [E=BASE:%1]
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^app\.php(/(.*)|$) %{ENV:BASE}/$2 [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule .? - [L]
RewriteRule .? %{ENV:BASE}/app.php [L]
</IfModule>
<IfModule !mod_rewrite.c>
<IfModule mod_alias.c>
RedirectMatch 302 ^/$ /app.php/
</IfModule>
</IfModule>
轉換的web.config文件是目前:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Imported Rule 1" stopProcessing="true">
<match url=".?" ignoreCase="false" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" />
</conditions>
<action type="None" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
非常感謝!
戴夫
感謝您的答案道格,非常感謝,雖然這正是我所做的,但它並沒有因爲某些原因轉換所有規則。是否有可能將結果web.config文件發佈在您的答案中,以便我可以看到具體的規則,這將是巨大的幫助!謝謝:) – deshg
已編輯我的帖子更多的細節。 – Doug
你是一個傳奇人物,感謝Doug解決了它。現在我看它,缺失的元素非常明顯,謝謝你的啓發! – deshg