En passant Répertoire non Existant En tant que paramètre dans IIS ou Apache
-
19-09-2019 - |
Question
Premier coup d'oeil à l'adresse suivante:
https://stackoverflow.com/questions/tagged/xoxoxo/
Ce répertoire n'existe pas, mais stackoverflow peut passer d'une certaine manière ce répertoire en tant que dernier paramètre à son scénario de base.
Est-ce possible de configurer IIS ou Apache pour le faire? Comment?
La solution
Le mécanisme derrière ce genre de comportement est appelé url réécriture et peut être mis en œuvre dans Apache mod_rewrite
-modules et dans IIS avec soit hélicons ISAPI_Rewrite Lite (ou l'une des alternatives non libres offertes par Helicon) pour IIS 5.1 et 6 ou Microsoft URL Rewrite Module IIS 7 .
Par exemple, les paramètres suivants veilleront à ce que toute demande qui ne peut être égalée sur un fichier ou un répertoire existant sera transféré au fichier index.php
.
mod_rewrite
(.htaccess
dans votre répertoire racine de document ou quelque part dans votre httpd.conf
)
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR] // IF is file (with size > 0)
RewriteCond %{REQUEST_FILENAME} -l [OR] // OR is symbolic link
RewriteCond %{REQUEST_FILENAME} -d // OR is directory
RewriteRule ^.*$ - [NC,L] // DO NOTHING
RewriteRule ^.*$ index.php [NC,L] // TRANSFER TO index.php
ISAPI_Rewrite Lite (dans la boîte de dialogue appropriée de vos paramètres IIS)
// uses same syntax as mod_rewrite
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
Module Microsoft URL Rewrite (dans votre web.config
dans le répertoire racine du document ou seomewhere dans l'arborescence de configuration)
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<clear />
<rule name="MatchExistingFiles" stopProcessing="true">
<match url="^.*$" />
<conditions logicalGrouping="MatchAny">
<add input="{REQUEST_FILENAME}" matchType="IsFile" pattern="" ignoreCase="false" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" pattern="" ignoreCase="false" />
</conditions>
<action type="None" />
</rule>
<rule name="RemapMVC" stopProcessing="true">
<match url="^.*$" />
<conditions logicalGrouping="MatchAll" />
<action type="Rewrite" url="index.php" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>