Problème quand une page n'existe pas

Nouveau WRInaute
Bonjour,

Je travaille actuellement pour un site d'e-commerce. Le site est en aspx (.NET) sur un serveur IIS 6 (Windows server 2003). Afin d'améliorer le référencement, nous avons mis en place un système d'URL rewriting avec le plug-in Helicon Isapi Rewrite 3.
Quand un utilisateur tape une adresse qui n'existe pas, IIS est paramétré pour rediriger vers une page d'erreur 404. Le client voudrait que l'adresse reste la même mais que l'intérieur de la page soit justement la page d'erreur 404. Pour ce faire, je pensais créé une règle d'URL Rewriting comme cela:
Code:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) /pagenotfound.aspx [NC]

Le principe étant, si le fichier demandé n'existe pas, on redirige vers "pagenotfound.aspx". Cette règle a été placée à la toute fin du fichier "httpd.conf" donc après toutes les règles précédentes.
Le problème est le suivant:
l'utilisateur tape l'adresse "www.monsite.fr/elementdynamique/default.aspx", les différentes règles change cette adresse en "www.monsite.fr/default.aspx?param=elementdynamique". Cela fonctionne très bien mais la ligne RewriteCond à la fin du fichier test le fichier suivant: "D:\www\elementdynamique\default.aspx" alors que le fichier réel est "D:\www\default.aspx".
Autrement dit, l'URI est bien changé mais pas la référence au fichier physique. Du coup, la règle s'applique et l'utilisateur voit la page "pagenotfound.aspx" alors qu'il a dans l'adresse "www.monsite.fr/elementdynamique/default.aspx".
Je n'arrive pas à trouver une règle ou une variable serveur qui me permette de tester l'existence du fichier.

Avez-vous une suggestion ?

Merci d'avance,

*** Edit ***
PS: Voilà le log associé à ce que vient d'expliquer. Cela sera peut-être plus clair.
Code:
(3) applying pattern '^(.*)(?:/elementdynamique/)([\w/\-_\.]*)(?:\?)?(.*)?$' to uri '/elementdynamique/default.aspx'
(1) Rewrite URL to >> /default.aspx?param=elementdynamique&SkinID=2&
(2) rewrite '/elementdynamique/default.aspx' -> '/default.aspx?param=elementdynamique&SkinID=2&'
(4) RewriteCond: input='/elementdynamique/default.aspx' pattern='!-f' => matched
(1) Rewrite URL to >> /pagenotfound.aspx?param=elementdynamique&SkinID=2&
(2) rewrite '/default.aspx?param=elementdynamique&SkinID=2&' -> '/pagenotfound.aspx?param=elementdynamique&SkinID=2&'
(2) internal redirect with /pagenotfound.aspx?param=elementdynamique&SkinID=2& [INTERNAL REDIRECT]

Nicolas
 
WRInaute accro
Bonjour

Et avec
Code:
ErrorDocument 404 /pagenotfound.aspx
?

L'URL dans la barre d'adresse ne change pas, et c'est le contenu de /pagenotfound.aspx qui sera affiché
Edit : Après relecture, j'ai l'impression que ma réponse est trop simple :)
 
Nouveau WRInaute
Je ne trouve pas la directive ErrorDocument dans le plug-in d'Helicon. De plus, la version du plug-in est la version light (on a pas accès à toutes les directives).
Voilà la liste des directives
Code:
AccessFileName
AllowOverride
RewriteEngine
RewriteRule
RewriteCond
RewriteBase
RewriteProxy
RewriteHeader
RewriteMap
RewriteLog
RewriteLogLevel
RewriteOptions
RewriteCompatibility2
ErrorLog
LogLevel
VirtualHost
Directory
DirectoryMatch
Files
FilesMatch
Location
LocationMatch

De plus, voici les limitations de la version LITE du plug-in:
Lite version limitations

Lite version of ISAPI_Rewrite shares the same rewrite engine and features but with the following limitations:

No support for distributed .htaccess configurations, directory and web site level configurations. Only one global httpd.conf configuration file will be loaded from Lite version installation folder.
No support for <VirtualHost>, <Directory>, <DirectoryMatch>, <Files>, <FilesMatch>, <Location> and <LocationMatch> tags.
There is no proxy module in Lite version, thus all proxy related functions like RewriteProxy directive and [P] flag will be ignored.
No manual installation package for Lite version to install in a shared hosting environment.
ISAPI_Rewrite Lite is completely free and it is a good solution for development or testing purposes and for small servers that host only a few web sites and don’t require distributed configurations or proxy functions.
 
Discussions similaires
Haut