Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 20-06-2013 16:37:05

vg33
Membre
Date d'inscription: 30-07-2008
Messages: 46

Rewriting et prise en compte des <Location> dans le virtualhost

Bonjour,
J'ai un problème technique épineux pour lequel je ne trouve pas de solution.
Je réalise (dans une application zend_framework) un url_rewriting où tous les fichiers inexistants sont renvoyés vers index.php. La config est dans le virtualhost, dans des balises <Location> (voir plus bas).
Mais je veux aussi affecter des php_value à certaines url.
Or, ces configs ne sont pas prises en compte, car il semble que l'url testée dans <Location> soit celle réécrite (/index.php) et non pas la requête initiale (/pr/media/)
Voici mon virtualhost :

Code:

    <Location /pr/media/>
        php_value post_max_size "300M"
        php_value upload_max_filesize "210M"
        php_value max_input_time 1800
        php_value max_execution_time 1800
        php_value memory_limit -1
    </Location>
    
    <Location />
        RewriteEngine on
        RewriteCond %{REQUEST_FILENAME} -s [OR]
        RewriteCond %{REQUEST_FILENAME} -l [OR]
        RewriteCond %{REQUEST_FILENAME} -d
        RewriteRule ^.*$ - [NC,L]
        RewriteRule ^.*$ index.php [NC,L]
    </Location>

Quand je crée un fichier /pr/media/test.php, la config est bonne (le fichier existant, le rewriting n'a pas lieu).
Sinon, sur une requête rewritée (par exemple /pr/media/add qui est renvoyée vers /index.php), la config est fausse.
Enfin, pour une config <Location /index.php>, la requête /index.php a une bonne config.

Une idée ?

Hors ligne

 

#2 22-06-2013 14:53:39

vg33
Membre
Date d'inscription: 30-07-2008
Messages: 46

Re: Rewriting et prise en compte des <Location> dans le virtualhost

J'ai trouvé big_smile

La solution :

Code:

[lang=php]<If "%{THE_REQUEST} =~ m#^POST /pr/media/(add|edit)#">
        php_value post_max_size "300M"
        php_value upload_max_filesize "210M"
        php_value max_input_time 1800
        php_value max_execution_time 1800
        php_value memory_limit -1
</If>

THE_REQUEST garde la requête initiale tout le temps (mais n'est pas dispo par $_SERVER).
Après, c'est une bête regex car THE_REQUEST est du type 'POST /pr/media/add HTTP/1.1'.
m# ... # : change le délimiteur de / vers # (pour utiliser / dans la regex)
^ : début de chaîne
(add|edit) : l'un ou l'autre

En toutes lettres : si /pr/media/add ou /pr/media/edit est appelé en POST, fait ce qui suit.
Je rappelle que les instructions <If> ne sont disponible que dans Apache 2.4+

Si ça peut servir à quelqu'un !

Dernière modification par vg33 (22-06-2013 14:55:07)

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages