2010-06-01 5 views
2

Actuellement, j'ai cette configuration dans notre simple hosts.conf:url.rewrite-fois avec Kohana et urls


url.rewrite-once = (
    ".*.(js|ico|gif|jpg|png|css|php|htm)(?.*)?$" => "$0", 
    "/slapi" => "/slapi/index.php" 
) 

fonctionne très bien, sauf la ci-dessus échoue quand j'ai un point dans la chaîne de requête:

? url = http://google.com

Répondre

3

Pourquoi ne pas simplement utiliser le server.error-handler-404 = "/path/to/index.php"?

Mais pour la regex elle-même, il y a beaucoup de caractères non-échappés. La deuxième . Je suppose que vous voulez dire comme littéral .. Si oui, vous devez lui échapper avec une barre oblique inverse \.. La même chose vaut avec le? caractère (qui encore une fois, je suppose que vous voulez dire un littéral?). Ainsi, le regex doit être:

".*\\.(js|ico|gif|jpg|png|css|php|htm)(\\?.*)?$" 

De plus, vous pouvez l'améliorer encore plus en supprimant le point d'interrogation autour du modèle de requête (je préfère cette syntaxe, je trouve plus facile à lire):

".*\\.(js|ico|gif|jpg|png|css|php|htm)(\\?.*|)$" 
+0

Ne fonctionne pas, mais merci. Je vais mettre à jour dans un peu, mais nous traçons les appels, peut-être un problème avec le cache squid –

+0

Ce n'est pas la couche de mise en cache. J'ai appelé la boîte à lumière directement, et même supprimé la ligne ci-dessus et cela fonctionne pour tout jusqu'à ce que j'ajoute un point dans la demande –

+0

Que fait-il exactement? Transférer la demande à $ 0 (et donc une erreur lighttpd 404)? Ne pas le réécrire du tout (quand il devrait?)? Etc...? – ircmaxell