У меня есть хостинг GoDaddy, и эта проблема убила меня. У меня возникали одни и те же проблемы снова и снова с конфликтующими опциями .htaccess в public_html, с моим защищенным паролем подкаталогом.
Я закончил тем, что купил другую учетную запись, потому что я попробовал около миллиона различных модификаций в моем файле .htaccess, и ничто не обошло эту проблему. Сейчас я делюсь своими настройками и решением, просто для полноты и ясности. (Точно так же, как вы знаете, учетная запись стоила того, так что не важно.)
Если это выглядит как комбинация ответов других, это потому, что это так. Все это потребовалось, чтобы работать.
Структура каталогов:
-otherfiles
---public_html
---.htaccess
-----subfolder
---.htaccess
В подпапке .htaccess есть функция защиты паролем, похожая на эту:
AuthType Basic
AuthName "Attendance"
AuthUserFile "/home/user/.htpasswds/public_html/attendance/passwd"
require valid-user
У public_html .htaccess изначально было это, и оно не работало (то есть глотало ВСЕ и перенаправляло его, так что FatFreeFramework или CodeIgniter обрабатывали его):
RewriteEngine On
RewriteCond $1 !^(index.php|resources|subfolder|robots.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.*)$ index.php?/$1 [L,QSA]
Чтобы исправить эту проблему, я добавил две строки в свой файл public_html .htaccess. И поэтому вы не угадаете, где я снова покажу весь файл:
RewriteEngine On
RewriteCond $1 !^(index.php|resources|robots.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_URI} !^/(subfolder|subfolder/.*)$
ErrorDocument 401 default
RewriteRule ^(.*)$ index.php?/$1 [L,QSA]