Search code examples
.htaccessmod-rewrite

htaccess rewriterule to subdirectory without 301


I have a question about a RewriteRule with .htaccess without 301. Below my directory structure:

 -root
 --public
 --app

In the root directory I have a directory public and app. In the directory public I have an index.php file.

In the root directory I have a .htaccess file and I want all traffic to got to the index.php file in the directory public.

What I have tried:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^/public/ [NC]
RewriteRule ^(.*)$ public/index.php?url=$1 [L,QSA]

The rewrite does nothing and I see the index from the directory

Who can help me?


Solution

  • RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} ^/public/ [NC]
    RewriteRule ^(.*)$ public/index.php?url=$1 [L,QSA]
    

    You need to remove the 3rd condition that checks if the requested URL-path starts /public/. Presumably, you are making a request for something like /foo, so this condition will prevent the rule from doing anything.