views:

321

answers:

2

I have codeigniter installed at the root directory, and would like to have a subdirectory called "test" password protected using htaccess. I keep getting a "404 page not found" no matter what I try. The directory structure is:

/public_html  
    /css  
    /images
    /system (codeigniter directory)
    /test
        .htaccess
.htaccess
.htpasswd
index.php

The root .htaccess file looks like:

RewriteEngine On
RewriteBase /

Options -Indexes    

# Removes trailing slashes
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ $1 [L,R=301]

# Enforce www
RewriteCond %{HTTP_HOST} !^(www) [NC]
RewriteRule ^(.*)$ http://www.mydomain.com/$1 [L,R=301]


#Checks to see if the user is attempting to access a valid file,
#such as an image or css document, if this isn't true it sends the
#request to index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^(.*)test(.*)    
RewriteRule ^(.*)$ index.php?/$1 [L]

The /test/.htaccess file:

AuthUserFile /home/dir/.htpasswd
AuthName "Protected Area"
AuthType Basic
<limit GET POST PUT>
  require user adminuser
</limit>

I'm not even getting the authentication prompt, just the codeigniter 404 page when I navigate to the url "http://www.mydomain.com/test/".

Please advise!

A: 
RewriteCond $1 !^(index\.php|addFoldersHere)

Try this in place of your current RewriteCond rule in your main .htaccess. This will allow folders you specify (where it says addFoldersHere) to not be ignored. Make sure you don't add a trailing | after the list of folder(s).

stormdrain
This did not work for me, thanks for the suggestion.
Art Peterson
+2  A: 

Here is how I finally solved it (found solution in CodeIgniter forum at http://codeigniter.com/forums/viewthread/56677/P15/):

I had this line to my root htaccess:

RewriteCond $1 !^(401.shtml)

So the final block in my root htaccess ended up looking like this:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(401.shtml)
RewriteRule ^(.*)$ index.php?/$1 [L]

So relieved a solution was out there.

Art Peterson