为什么symfony link_to helper会将.php附加到应用程序名称

时间:2011-05-25 05:46:01

标签: symfony1 routing

我有一个名为client的symfony 1.4应用程序,其模块为device。以下是此应用程序中使用的routing.yml文件的一部分:

device_detail:
  url: /device/:device_name
  param: { module: device, action: show }

device_manage:
  url: /manage/:device_name
  param: { module: device, action: manage }

我可以毫无问题地加载页面http://example.com/client/device/jdoe。此页面包含使用link_to帮助程序生成的链接。例如,

link_to("Manage this device",  "manage/{$device_name}")

生成网址http://example.com/client.php/manage/jdoe

我的问题是:为什么link_to助手会生成包含字符串client.php的网址,而不仅仅是client?页面地址使用clientlink_to更改为client.php似乎很奇怪。

3 个答案:

答案 0 :(得分:2)

检查settings.yml中应用程序的apps/<YOURAPP>/config/settings.yml文件,并相应地针对相应环境调整no_script_name配置标志。之后清除缓存。通常,您的开发模式会将no_script_name设置为false,并且您的制作会将其设置为true

示例:

prod:
  .settings:
    no_script_name: true

dev:
  .settings:
    no_script_name: false

编辑:正如dxb指出的那样,这也仅适用于项目中的单个应用程序。如果您希望在同一项目中使用多个应用,则需要在路由中应用前缀(例如/admin),使用不同的域/子域或类似解决方案。

答案 1 :(得分:0)

您可以在settings.yml中设置参数,以删除网址的应用名称 PROD:
  .settings
    no_script_name:off

这仅适用于项目中的一个应用。

答案 2 :(得分:0)

确保您已准备好HTACCESS并在Apache

中启用了mod_rewite