Iis-7
如何設置 IIS7 以將所有內容傳遞給 Joomla?
上下文: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" />