Iis-7

如何設置 IIS7 以將所有內容傳遞給 Joomla?

  • December 20, 2011

上下文:IIS7、Win7、Joomla 1.5

使用這個 URL,http://website/foo,如果我在 Joomla 安裝的根目錄中有一個名為“foo”的子目錄,IIS7 會嘗試在其中找到 index.php 並在 Joomla 開始之前返回 403。

有了這個 URL,http://website/bar,如果我沒有名為“bar”的子目錄,IIS7 會將 URL 傳遞給 Joomla 並讓它處理頁面是否存在。

http://website/foo的情況下,我如何設置 IIS7 以便它忽略存在“foo”子目錄的事實,並將完整的 URL 傳遞給 Joomla?

我得到的最佳答案來自StackOverflow

作為在 IIS 上安裝 Joomla 的一部分,您可能(或至少應該)創建了一個類似於以下內容的 web.config:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
 <system.webServer>
   <rewrite>
     <rules>
       <rule name="Security Rule" stopProcessing="true">
         <match url="^(.*)$" ignoreCase="false" />
         <conditions logicalGrouping="MatchAny">
           <add input="{QUERY_STRING}" pattern="mosConfig_[a-zA-Z_]{1,21}(=|\%3D)" ignoreCase="false" />
           <add input="{QUERY_STRING}" pattern="base64_encode.*\(.*\)" ignoreCase="false" />
           <add input="{QUERY_STRING}" pattern="(\<|%3C).*script.*(\>|%3E)" />
           <add input="{QUERY_STRING}" pattern="GLOBALS(=|\[|\%[0-9A-Z]{0,2})" ignoreCase="false" />
           <add input="{QUERY_STRING}" pattern="_REQUEST(=|\[|\%[0-9A-Z]{0,2})" ignoreCase="false" />
         </conditions>
         <action type="CustomResponse" url="index.php" statusCode="403" statusReason="Forbidden" statusDescription="Forbidden" />
       </rule>
       <rule name="SEO Rule">
         <match url="(.*)" ignoreCase="false" />
         <conditions logicalGrouping="MatchAll">
           <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" pattern="" ignoreCase="false" />
           <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" pattern="" ignoreCase="false" />
           <add input="{URL}" negate="true" pattern="^/index.php" ignoreCase="false" />
           <add input="{URL}" pattern="(/|\.php|\.html|\.htm|\.feed|\.pdf|\.raw|/[^.]*)$" />
         </conditions>
         <action type="Rewrite" url="index.php" />
       </rule>
     </rules>
   </rewrite>
</system.webServer>
</configuration>

要阻止 IIS 在重寫到 Joomla 之前檢查現有文件和目錄,您應該刪除以下兩行:

   <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" pattern="" ignoreCase="false" />
   <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" pattern="" ignoreCase="false" />

引用自:https://serverfault.com/questions/339639