Autoriser les réécriture d'URL en clair (SEF) avec IIS/IIS7

From Joomla! Documentation

< Enabling Search Engine Friendly (SEF) URLs on IIS
This page is a translated version of the page Enabling Search Engine Friendly (SEF) URLs on IIS/IIS7 and the translation is 100% complete.
Other languages:
English • ‎français

Si votre serveur utilise IIS 7 et PHP, vous pouvez bénéficier de la réécriture d'URL propre à IIS en utilisant un fichier web.config similaire à celui décrit ci-dessous.

Vous pouvez soit créer le fichier vous-même ou bien à travers l'IHM du gestionnaire IIS7. Vous pouvez importer les règles .htaccess en utilisant le GUI/wizard.

L'utilisation de cette fonctionnalité dépend de la présence du module IIS URL Rewrite Module, qui n'est pas installé par défaut avec Windows. C'est un téléchargement gratuit d'un produit Microsoft.

IHM

Si le module IIS "URL Rewrite module" est installé, votre gestionnaire de site mettra à disposition un outil "URL Rewrite", visible dans l'interface du gestionnaire d'IIS dans les modules IIS de la configuration de votre site. L'interface est largement intiutive. Les expressions régulières, les caractères spéciaux et les correspondances exactes sont tous supportés.

Dans la configuration de Joomla, activez à la fois SEF et Apache mod_rewrite. Ensuite, créer une règle dans IIS URL Rewrite :

Pattern field: ^([^/]+)/?$
Ignore case ON
Action type: Rewrite
Rewrite URL: index.php/

web.config

Ceci a été testé avec Joomla 1.5 et IIS 7 sous Windows Server 2008 sans rencontrer de problèmes. Pour plus d'information sur la conversion de .htaccess en web.config, reportez-vous à http://learn.iis.net/page.aspx/557/translate-htaccess-content-to-iis-webconfig/

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <clear />
                <rule name="Common Exploit Blocking" stopProcessing="true">
                    <match url="^(.*)$" />
                    <conditions logicalGrouping="MatchAny">
                        <add input="{QUERY_STRING}" pattern="mosConfig_[a-zA-Z_]{1,21}(=|\%3D)" />
                        <add input="{QUERY_STRING}" pattern="base64_encode.*\(.*\)" />
                        <add input="{QUERY_STRING}" pattern="(\&lt;|%3C).*script.*(\>|%3E)" />
                        <add input="{QUERY_STRING}" pattern="GLOBALS(=|\[|\%[0-9A-Z]{0,2})" />
                        <add input="{QUERY_STRING}" pattern="_REQUEST(=|\[|\%[0-9A-Z]{0,2})" />
                    </conditions>
                    <action type="Redirect" url="index.php" appendQueryString="false" redirectType="SeeOther" />
                </rule>
                <rule name="Joomla Search Rule" stopProcessing="true">
                    <match url="(.*)" ignoreCase="true" />
                    <conditions logicalGrouping="MatchAll">
                        <add input="{URL}" pattern="^/search.php" ignoreCase="true" />
                    </conditions>
                    <action type="Rewrite" url="/index.php?option=com_content&amp;view=article&amp;id=4" />
                </rule>
                <rule name="Joomla Main Rewrite Rule" stopProcessing="true">
                    <match url="(.*)" ignoreCase="true" />
                    <conditions logicalGrouping="MatchAll">
                        <add input="{URL}" pattern="(/[^.]*|\.(php|html?|feed|pdf|raw))$" />
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="index.php/" />
                </rule>
            </rules>
        </rewrite>
        <caching>
            <profiles>
                <add extension=".php" policy="DisableCache" kernelCachePolicy="DisableCache" />
            </profiles>
        </caching>
    </system.webServer>
</configuration>