Turn on "Search Engine Friendly"(SEF) for Joomla in IIS7

Error:

404 Error - Page not found when you browse to your Joomla link.

Cause:

1. With the nature of Joomla SEF behavior, it is designed to relies on the URL rewriting functionality to be available on web services.
2. Joomla by default is designed for Apache environment and the rewriting functionality was designed with .htaccess where could not understand by IIS7 by default.

Solution:

1. As Exabytes did install IIS7.0 Microsoft URL Rewrite Module, hence you may following the step as below to allow your SEF work.

2. Backup your current web.config file from your wwwroot folder (or root folder of your script set from DotNetPanel website).

3. Open the web.config file either from your FTP or DotNetPanel's file manager. Paste the following XML code to web.config file to replace the older file.

<?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>
 

References:
1. http://learn.iis.net/page.aspx/527/joomla-on-iis/

Add Feedback