Symfony1 Symfony生产阶段不工作

Symfony1 Symfony生产阶段不工作,symfony1,Symfony1,我有一个名为content的模块,它位于应用程序前端。当我转到localhost:8080/frontend\u dev.php/content时,页面显示得很好,没有错误。但是没有/frontend\u dev.php我无法访问该页面 有什么不对劲?这是我的前端设置。yml: prod: .settings: no_script_name: true logging_enabled: false dev: .settings: e

我有一个名为content的模块,它位于应用程序前端。当我转到
localhost:8080/frontend\u dev.php/content
时,页面显示得很好,没有错误。但是没有
/frontend\u dev.php
我无法访问该页面

有什么不对劲?这是我的前端设置。yml:

prod: .settings: no_script_name: true logging_enabled: false dev: .settings: error_reporting: web_debug: true cache: false no_script_name: false etag: false test: .settings: error_reporting: cache: false web_debug: false no_script_name: false etag: false all: .settings: # Form security secret (CSRF protection) csrf_secret: ecca0f5ffb475363f798d55871546583f60f971f # Output escaping settings escaping_strategy: true escaping_method: ESC_SPECIALCHARS # Enable the database manager use_database: true enable_modules: [default, sfGuardAuth] 产品: .设置: 否\u脚本\u名称:true 已启用日志记录:false 开发人员: .设置: 错误报告: web_调试:true 缓存:false 无脚本名称:false 埃塔格:错 测试: .设置: 错误报告: 缓存:false web_调试:false 无脚本名称:false 埃塔格:错 全部: .设置: #表单安全机密(CSRF保护) csrf_机密:ecca0f5ffb475363f798d55871546583f60f971f #输出转义设置 逃避策略:正确 转义方法:ESC\u特殊字符 #启用数据库管理器 使用_数据库:true 启用_模块:[默认值,sfGuardAuth] 我从网络服务器上得到的是404。已清除symfony缓存,但不起作用。并且做了一个chown-R用户名项目目录

我指的地址是
localhost:8080/module/action
,对任何东西都不起作用。但它在另一台服务器上的工作原理是这样的,我正在运行一个symfony项目

编辑: 我对symfony还是新手。我设法用
localhost:8080/index.php/module/action
进入。但是如何从路由规则中删除index.php呢?谢谢


谢谢

听起来好像
mod\u rewrite
没有启动,你启用了吗?它安装了吗

您可以通过以下方式进行检查:

/your/path/to/httpd-M | grep rewrite

或者您可以删除
.htaccess
中重写规则周围的
标记。执行此操作后,如果未安装和/或启用mod_rewrite,apache将生成配置错误

如果您安装了mod rewrite,请确保其指令可以从
.htaccess
使用。您的vhost(或httpd.conf)中应该有如下内容:


允许超越所有
#可能还有其他规则。。。。

2件事。1.清除缓存。2.查看是否调用了
index.php
。可能是
.htaccess
重定向不起作用。当您说“但是没有
/frontend\u dev.php
我无法访问页面”时,您请求的确切URL是什么?当你说你无法访问该页面时,有什么问题?一个错误消息,一个404?如果是404,是Symfony的自定义404,还是默认web服务器的404?我清除了缓存,什么也没发生。我的意思是仅仅本地主机:8080/内容。我想Index.php就是一个名字。有效的方法是改变路径,使内容成为我的主页,然后清除缓存。。。是的,它是一个404,来自默认的web服务器。我还做了一个chown-R项目目录。不明白为什么只有开发阶段在工作:(您在
prod
env中将
no_script\u name
设置为true,因此您不应该在url中需要
index.php
。如果您获得默认的Web服务器404,那么它根本不会进入index.php…要么是因为它不存在,要么是因为mod_rewrite以某种方式配置错误。如果是权限问题,您将获得很可能是403…我确实需要index.php,这就是问题所在,即使在prod中no_script_name设置为true。是的,这似乎是唯一可能的答案。@Johannes,是web/.htaccess文件中的重写规则将对localhost:8080/module/action的请求更改为对index.php的请求,这是de中的最终重写规则fault Symfony.htaccess文件就是实现这一特殊功能的位。如果您的.htaccess文件丢失,或者Web服务器无法读取,或者正如prodigitalson所说,Apache没有配置为启用/允许使用mod_rewrite进行重写,那么这肯定会导致您的问题。谢谢,现在我学到了一些东西。我从availab制作了一个符号链接le to enabled mods in/etc/apache2。然后我编辑了/etc/apache2/sites enabled/000,默认为AllowOverride All。@Johannes(主题外!)你是手动创建这些符号链接的吗?你知道,可能有一个“a2enmod”命令可以帮你完成这项工作……是的,从来没有听说过a2enmod:D
<Directory "/path/to/your/project/web">
  AllowOverride All
  # possibly other rules....
 </Directory>