Назад | Перейти на главную страницу

Как настроить IIS7 для передачи всего на Joomla?

Контекст: IIS7, Win7, Joomla 1.5

С этим URL-адресом http: // сайт / foo , если у меня есть подкаталог с именем «foo» в корне установки Joomla, IIS7 пытается найти в нем index.php и возвращает 403, прежде чем Joomla начнет работу.

С этим URL-адресом http: // сайт / бар , если у меня нет подкаталога с именем «bar», IIS7 передает URL-адрес Joomla и позволяет ему позаботиться о том, существует страница или нет.

В случае http: // сайт / foo , как мне настроить IIS7 так, чтобы он игнорировал факт наличия подкаталога "foo" и передавал полный URL-адрес Joomla?

В рамках установки Joomla на IIS вы, вероятно (или, по крайней мере, должны были) создать 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="(\&lt;|%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" />

Лучший ответ, который я получил на это, пришел из Переполнение стека