title: Symfony 4, access to public/index.php OK in dev mode, access KO (404) in prod mode
body: <p>In development mode, I use an apache server, I go to my App via <code>localhost/myApp/public/index.php</code> . I want test prod mod with my symfony 4 application.</p>
  <ul>
  <li>I changed the APP_ENV variable to &quot;prod&quot; (in the .env file)</li>
  <li>I installed composer packages via the command <code>composer install --no-dev</code></li>
  </ul>
  <p>But now, when I open my browser and go to <code>localhost/myApp/public/index.php</code>, I get a symfony 404 error page :</p>
  <p><a href="https://i.stack.imgur.com/jYDWK.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/jYDWK.png" alt="enter image description here" /></a></p>
  <p>The apache configuratin seems good (I can access to the website without any problems in dev mode and I get a 404 not found built by symfony, the index.php is found by apache). I don't understand where may be the problem :/</p>
  <p>EDIT : below, the content of the .htaccess file (in the public directory). I don't modify it, this is the symfony default htaccess file :</p>
  <pre><code># Use the front controller as index file. It serves as a fallback solution when
  # every other rewrite/redirect fails (e.g. in an aliased environment without
  # mod_rewrite). Additionally, this reduces the matching process for the
  # start page (path &quot;/&quot;) because otherwise Apache will apply the rewriting rules
  # to each configured DirectoryIndex file (e.g. index.php, index.html, index.pl).
  DirectoryIndex index.php
  
  # By default, Apache does not evaluate symbolic links if you did not enable this
  # feature in your server configuration. Uncomment the following line if you
  # install assets as symlinks or if you experience problems related to symlinks
  # when compiling LESS/Sass/CoffeScript assets.
  # Options FollowSymlinks
  
  # Disabling MultiViews prevents unwanted negotiation, e.g. &quot;/index&quot; should not resolve
  # to the front controller &quot;/index.php&quot; but be rewritten to &quot;/index.php/index&quot;.
  &lt;IfModule mod_negotiation.c&gt;
      Options -MultiViews
  &lt;/IfModule&gt;
  
  &lt;IfModule mod_rewrite.c&gt;
      RewriteEngine On
  
      # Determine the RewriteBase automatically and set it as environment variable.
      # If you are using Apache aliases to do mass virtual hosting or installed the
      # project in a subdirectory, the base path will be prepended to allow proper
      # resolution of the index.php file and to redirect to the correct URI. It will
      # work in environments without path prefix as well, providing a safe, one-size
      # fits all solution. But as you do not need it in this case, you can comment
      # the following 2 lines to eliminate the overhead.
      RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
      RewriteRule ^(.*) - [E=BASE:%1]
  
      # Sets the HTTP_AUTHORIZATION header removed by Apache
      RewriteCond %{HTTP:Authorization} .
      RewriteRule ^ - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
  
      # Redirect to URI without front controller to prevent duplicate content
      # (with and without `/index.php`). Only do this redirect on the initial
      # rewrite by Apache and not on subsequent cycles. Otherwise we would get an
      # endless redirect loop (request -&gt; rewrite to front controller -&gt;
      # redirect -&gt; request -&gt; ...).
      # So in case you get a &quot;too many redirects&quot; error or you always get redirected
      # to the start page because your Apache does not expose the REDIRECT_STATUS
      # environment variable, you have 2 choices:
      # - disable this feature by commenting the following 2 lines or
      # - use Apache &gt;= 2.3.9 and replace all L flags by END flags and remove the
      #   following RewriteCond (best solution)
      RewriteCond %{ENV:REDIRECT_STATUS} ^$
      RewriteRule ^index\.php(?:/(.*)|$) %{ENV:BASE}/$1 [R=301,L]
  
      # If the requested filename exists, simply serve it.
      # We only want to let Apache serve files and not directories.
      RewriteCond %{REQUEST_FILENAME} -f
      RewriteRule ^ - [L]
  
      # Rewrite all other queries to the front controller.
      RewriteRule ^ %{ENV:BASE}/index.php [L]
  &lt;/IfModule&gt;
  
  &lt;IfModule !mod_rewrite.c&gt;
      &lt;IfModule mod_alias.c&gt;
          # When mod_rewrite is not available, we instruct a temporary redirect of
          # the start page to the front controller explicitly so that the website
          # and the generated links can still be used.
          RedirectMatch 307 ^/$ /index.php/
          # RedirectTemp cannot be used instead
      &lt;/IfModule&gt;
  &lt;/IfModule&gt;
  </code></pre>
  <p>Edit 3 : I created the php file <code>foo.php</code> in the dir public with <code>&lt;?php echo 'foo';?&gt;</code> and I can access to this file through my browser without any problem. Something is wrong with symfony but impossible to find where is my error...</p>
  <p>Thank you for any help !</p>