2009-11-04 5 views
1

J'ai un site construit dans symfony.problèmes de routage symfony avec index.php

Cependant, je mets des règles de routage:

resgister: 
url:  /register 
param: { module: register, action: index } 

et je mettre un lien:

link_to('register - here','register') 

mais ce lien pointe vers http://www.mydomain.com/register au lieu de http://www.mydomain.com/index.php/register

donc je obtenir une erreur 404.

ce problème n'apparaît que sur la production env, et non sur le développement env.

des idées?

merci!

Répondre

3

Parce que le paramètre no_script_name est défini sur "activé" dans l'environnement de production.

0

Vous devez décommenter cette ligne RewriteBase / dans votre fichier /web/.htaccess

# uncomment the following line, if you are having trouble 
# getting no_script_name to work 
#RewriteBase/

Ce sera probablement aider :)

Je suppose que vous avez le apache rewrite_module activé

+0

Je pensais qu'il veut de ne pas utiliser 'no_script_name' – develop7

+0

Ou il pourrait simplement se demander pourquoi il obtient les liens sans index.php - et vous avez raison en raison de la mise en no_script_name Mais la raison de l'erreur 404 est que il pourrait avoir mal configuré un mod_rewrite. Sinon, le changement de .htaccess pourrait le résoudre. –

3

Il y a faute d'orthographe dans votre fichier YML:

resgister: 
    url:  /register 
    param: { module: register, action: index } 

devrait être

register: 
    url:  /register 
    param: { module: register, action: index } 

utiliser avec:

echo link_to('register - here','@register'); 

Cela devrait fixer le 404. Le no_script_name est les raisons pour lesquelles vous ne voyez pas index.php comme indiqué dans plusieurs autres réponses.