J'utilise Iirf v2.0.RewriteCond Vérifiez si le fichier existe dans un sous-répertoire
J'ai la structure de répertoire suivant:
/
/library
/library/index.php
/webroot
/webroot/images
/Iirf.ini
Là où j'ai un dossier de bibliothèque qui contient ma demande, un dossier de Webroot (qui contient des images, feuilles de style, etc.) et un fichier de configuration Iirf.ini.
Je souhaite rediriger toutes les demandes vers /library/index.php si le fichier n'existe pas sous le site Webroot.
par exemple:
Request Response
/images/blah.png -> /webroot/images/blah.png
/news -> /library/index.php
config Mon Iirf.ini a:
RewriteEngine ON
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /library/index.php [L]
qui redirige tout à /library/index.php
mais je vais avoir du mal à travailler sur la façon de vérifier si le REQUEST_FILENAME
existe sous Webroot. J'ai regardé this question mais je n'ai pas accès à DOCUMENT_ROOT
. Il me donne ce qui suit (pris du journal):
Thu Jul 15 11:46:21 - 760 - ReplaceServerVariables: VariableName='REQUEST_FILENAME' Value='C:\web\favicon.ico'
Thu Jul 15 11:46:21 - 760 - ReplaceServerVariables: in='%{DOCUMENT_ROOT}/webroot/%{REQUEST_FILENAME}' out='DOCUMENT_ROOT/webroot/C:\web\favicon.ico'
Toute aide serait grandement appréciée.
--- EDIT -
J'ai mis à jour ma config après plus de lecture et les suggestions de Tim à être:
RewriteCond $0 !^/webroot
RewriteRule ^.*$ /webroot$0 [I]
RewriteCond $0 !-f
RewriteRule ^/webroot/(.*)$ /library/index.php [I,L,QSA]
Et il passe à /library/index.php
correctement mais il reste doesn ne vérifie pas un fichier existant (même s'il semble dire que c'est le cas).
Thu Jul 15 14:47:30 - 3444 - EvalCondition: checking '/webroot/images/buttons/submit.gif' against pattern '!-f'
Thu Jul 15 14:47:30 - 3444 - EvalCondition: cond->SpecialConditionType= 'f'
Thu Jul 15 14:47:30 - 3444 - EvalCondition: Special: it is not a file
Je pense que je vais devoir contacter l'auteur du filtre.
Hmm, qu'en 'RewriteCond% {de APPL_PHYSICAL_PATH} $ 0 -f' dans ce second cas (l'URL relative est pas un filepath, ce wouldn ne travaillons pas dans 'mod_rewrite')? (Ou avez-vous déterminé que '% {APPL_PHYSICAL_PATH}' n'était pas ce que j'avais espéré?) –
L'utilisation de '% {APPL_PHYSICAL_PATH}' donne un chemin comme 'C: \ chemin \ vers \ dossier \ webroot/images/boutons/submit.gif' que vous penseriez serait bon, mais il échoue toujours. –
Hmm, (en regardant le code source) il s'appuie sur la valeur de retour de la fonction de l'API Windows 'CreateFile' pour vérifier si le fichier existe ... Ce qui ne devrait pas poser de problème pour trouver ce chemin, donc je ne comprends, bah. –