Як видалити захист паролем .htaccess із підкаталогу


97

Я захистив весь пароль своїм веб-сайтом за допомогою пароля, .htaccessале я хотів би відкрити один із підкаталогів, щоб його можна було переглядати без пароля.

Як я можу вимкнути захист паролем htaccess для підкаталогу? Зокрема, що таке .htaccessсинтаксис.

Ось мій .htaccessфайл, який розміщений у корені мого ftp.

AuthName "Адміністратор сайту"
AuthUserFile /dir/.htpasswd
AuthGroupFile / dev / null

AuthName захищений
AuthType Basic
вимагати ім’я користувача1
наказ дозволити, відмовити
дозволити від усіх

4
Це може бути більше підходить для серверного значення.
благає

Відповіді:


154

Вам потрібно створити новий .htaccessфайл у необхідному каталозі та включити в нього Satisfy anyдирективу ось так, до версії Apache 2.3:

# allows any user to see this directory
Satisfy Any

Синтаксис змінено в Apache 2.4, це має той самий ефект:

Require all granted

7
Я міг змусити це працювати лише з Allow from allне Satisfy Any.
Джесс Телфорд,

@JessTelford добре використовує фрагмент коду. @RageZ +1 для відповіді, яка мені підійшла. Не могли б ви відредагувати відповідь надто простою та опублікувати її, використовуючи метод фрагмента коду. Інакше комусь доведеться подуматиthanks
Джессі Бурчік

2
@JessTelford Satisfy Anyпрацює, і це було прописано як Satisify Any. Можливо, саме з цієї причини у вас це не спрацювало.
BlueBird

1
Мені потрібно було захистити один файл (все інше захищено), зроблений таким же у розділі <Files>
Нік

Це не працює для мене - я все ще отримую модальний пароль із запитом на ім'я користувача та pwd .. Використання Firefox та Windows 7 ... Хтось має ідею?
ItsMeDom

36

Додавши відповідь RageZ, я використав це в директивах щодо сервера:

<Directory /var/www/protected/>
     AuthType Basic
     AuthName "Production"
     AuthUserFile /path/to/.htpasswd
     Require valid-user
</Directory>

<Directory /var/www/protected/unprotected>
     Satisfy Any
</Directory>

Дивовижно. Дякую RageZ!


9

Просто створіть новий .htaccessу потрібному підкаталозі за допомогою цієї директиви:

Allow from all

Ви можете обмежити свій IP лише за допомогою:

Allow from x.x.x.x

Див .: http://httpd.apache.org/docs/current/mod/mod_access_compat.html


Це спрацювало, коли я поставив "Вимагати всіх наданих" замість "Дозволити від усіх" та "Задовольнити будь-яке". Ці двоє мені не працювали. Я працюю на Apache 2.4.
endo64

1

Вам потрібно додати ще один файл .htaccess до підкаталогу, який замінює аутентифікацію. .htaccess каскадує вгору, тобто він буде шукати в поточній папці, потім підніметься на рівень і так далі.


4
ти випадково знаєш синтаксис? Я розумію концепцію, але не знаю, як її реалізувати.
justinl

Якщо ви хочете видалити поточний і не використовувати дозволи, просто замініть його порожнім файлом з іменем .htaccess
Gaʀʀʏ

3
@Garry не так працює каскадування .htaccess, вам потрібно явно перевизначити параметри.
Вільям Денніс,

1

Ось спосіб дозволити підкаталог "foo" через базову автентифікацію з основного файлу .htaccess на сайті:

AuthType Basic
AuthName "Password Required"
AuthUserFile /dir/.htpasswd
Require expr %{REQUEST_URI} =~ m#^/foo/#
Require valid-user

Примітка: Це працює в Apache 2.4. Я не підтвердив попередні версії.


0

Якщо ви хочете запобігти будь-якій конкретній прямій аутентифікації htaccess, тоді ви можете використовувати наступний код у своєму файлі htaccess вгорі.

AuthType Basic AuthName "Enter Pass" AuthUserFile /home/public_html/.htpasswd /*PATH TO YOUR .htpasswd FILE*/ Require valid-user SetEnvIf Request_URI "(/DIRECTORY_NAME/)$" allow Order allow,deny Allow from env=allow

Крім того, якщо ви хочете запобігти декілька каталогів, додайте

SetEnvIf Request_URI "(/DIRECTORY_NAME/)$" allow

стільки разів, скільки каталогів потрібно видалити із попередження htaccess.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.