Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Password Protect Virtual Directory With .htaccess

I have a site with a virtual directory structure like mysite.com/folder/title which is actually a .htaccess rewrite to mysite.com/f/index.php?p=title. I want to password protect the folder folder with .htaccess, and know how to do that with actual folders. But I don't want to password protect the main site mysite.com, and right now if I put the .htaccess file in the mysite.com directory, I am protecting mysite.com and mysite.com/folder. I have also tried protecting mysite.com/f.

How can I protect only mysite.com/folder using .htaccess?

EDIT: Added .htaccess contents of mysite.com.

<IfModule mod_rewrite.c>
RewriteEngine On

RewriteRule ^folder/(.*)$ /f/index.php?p=$1 [PT,L,QSA]
RewriteRule ^folder/*$ /f/index.php [L,QSA]

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

</IfModule>

.htaccess file I tried in mysite.com/f This successfully protects the entire site when moved to mysite.com, so I know the path is correct. When it is in the subdirectory it generates a 404 error and not a password prompt.

AuthName "Restricted Area" 
AuthType Basic 
AuthUserFile /home/myusername/.htpasswd 
require valid-user
like image 731
jkeesh Avatar asked Jan 19 '26 21:01

jkeesh


1 Answers

Old thread is old...

Stumbled across this while having a similar issue, password protecting a subdomain while keeping the main site without.

The solution was easier than I originally made it out to be.

In the document_root/.htaccess, domain.com/wiki was redirecting to domain.com/w (because that's cleaner? lol):

RewriteEngine On
RewriteRule ^/?w(/.*)?$ /wiki/index.php [PT,L,QSA]
RewriteRule ^/*$ /wiki/index.php [L,QSA]

In document_root/wiki/.htaccess the wiki directory was password protected:

AuthType Basic
AuthName "Restricted"
AuthUserFile "/home/user/.htpasswds/public_html/wiki/passwd"
require valid-user

I simply added this line to the top of document_root/.htaccess so it reads:

AuthType None
RewriteEngine On
RewriteRule ^/?w(/.*)?$ /wiki/index.php [PT,L,QSA]
RewriteRule ^/*$ /wiki/index.php [L,QSA]

domain.com is no longer password protected and domain.com/wiki redirects as intended and with password protection.

Hope it helps someone else.

like image 82
John Keane Avatar answered Jan 21 '26 13:01

John Keane