1
I have a certain PHP application written with the Silex framework. I set up the structure in a way where only the folder public
would be the folder where I would point the Apache to read it.
My structure is more or less this:
projeto/
app/
resources/
public/
css/
js/
img/
index.php
vendor/
So, on my Apache Virtualhost, I would have to point to projeto/public
, because this would be the root of my site.
However the blessed of my server is Shared host, so I can not make appointment at all to folder public
.
On this Shared host server, the reading is done from the folder public_html
, and there’s no chance of me putting the folder public
.
I intend to use the folder public_html
to be the root by adding the files that are inside my folder projeto
(local development).
public_html/
app/
resources/
public/
css/
js/
img/
index.php
vendor/
I intend to use the structure. I know there is a way to direct everything that is accessed at the root to public/index.php
I’m doing like this:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ public/index.php [L]
I didn’t use !-d
purposely, because I don’t want anyone to access app
and look at the directory. I also have a route system within index.php
who could read app/
as an application path (and not as a folder).
The problem is that if I access app/routes.php
for example, an error page will appear, because this file should not be accessed, but only the folder public
.
I want to know if in .htaccess
there is some way to redirect everything absolutely to a specific folder.
I want my .htaccess
make the apache recognize public_html/public
as a root, instead of public_html
.
Because I want access to public/css/default.css
be rewritten to css/default.css
. And I don’t want other folders like vendor
, resources
and app
is accessible.
I mean, I want you to always public_html/public
is accessed as root.
You can do it?
I tried to make RewriteRule ^ public/index.php [L]
without the RewriteCond {REQUEST_FILENAME} !-f
and ended up giving an internal error (due to recursion generated).
I think I already asked that question...
– Jorge B.