Разрешить только прямой доступ к определенному имени папки через .htaccess - PullRequest
2 голосов
/ 05 августа 2011

Мне нужно разрешить прямой доступ к определенному имени папки (и его содержимого) через .htaccess и запретить все остальные.

Для начала мой текущий .htaccess:

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

Моя файловая структура, например:

    modules/
        core/
            _test/
            publics/
                file.txt
        other/
            _whatever/
                publics/
                    more.txt
            publics/
                sub/
                    file.txt
                other.txt
    .htaccess

Я не мог получить доступ ни к чему, кроме файлов и папок, которые находятся в папке publics. На этом примере я мог получить доступ без проблем:

  • модули / core / publics / [dir]
  • модули / ядро ​​/ публики / file.txt
  • модули / другое / _whither / publics / [dir]
  • модули / другие / _whatever / публики / more.txt
  • модули / другие / публичные / [dir]
  • модули / другие / публичные / sub / [dir]
  • модули / другие / публики / суб / file.txt
  • модули / другие / публики / other.txt

У меня не было доступа к какому-либо файлу или папке.

Полагаю, нам понадобится регулярное выражение, но я не знаю, как я могу использовать это на mod_rewrite, чтобы работать так, как я хочу.

Некоторые предложения?

1 Ответ

3 голосов
/ 05 августа 2011

Небольшое изменение вашего текущего htaccess. Любой доступ не из публичной папки будет перенаправлен в index.php:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !publics/
RewriteRule . index.php [L]
...