为什么我的控制器在Symfony中请求frontend_dev.php?

时间:2010-02-17 17:14:15

标签: php symfony1 controller

http://localhost/frontend_dev.php/1

为什么上述请求被重定向到frontend_dev.php而不是index.php

我读过.htaccess:

<IfModule mod_rewrite.c>
  RewriteEngine On

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

  # we skip all files with .something
  #RewriteCond %{REQUEST_URI} \..+$
  #RewriteCond %{REQUEST_URI} !\.html$
  #RewriteRule .* - [L]

  # we check if the .html version is here (caching)
  RewriteRule ^$ index.html [QSA]
  RewriteRule ^([^.]+)$ $1.html [QSA]
  RewriteCond %{REQUEST_FILENAME} !-f

  # no, so we redirect to our front web controller
  RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>

如果我理解正确,如果请求的文件不存在,则应将其重定向到index.php,在上述情况下如何运行frontend_dev.php

2 个答案:

答案 0 :(得分:6)

您已指定http://localhost/frontend_dev.php/1作为URL - Apache只是提供frontend_dev.php,因为您明确要求在URL中提供该文件。将您的网址更改为http://localhost/index.php/1以查看生产控制器。

重写规则只对 处理完全没有提到前端控制器的URL,即。 http://localhost/1 - 对于您最初提供的URL,根本没有解析重写规则,因为Apache检测到了frontend_dev.php文件,并且没有找到匹配的重写规则来解析。

答案 1 :(得分:2)

简单。由于frontend_dev.php确实存在,因此执行了 。并且不会执行重定向。