Apache .htaccess RewriteCond в каталоге - PullRequest
1 голос
/ 06 января 2011

У меня есть следующая структура каталогов в htdocs:

htdocs/
  .htaccess
  index.php
  foo/
  bar/
  priv/

Я пытаюсь получить чистые URL-адреса и в основном хочу, чтобы все маршрутизировалось через index.php. Мой .htaccess файл выглядит следующим образом:

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f # <- referring to this next
RewriteRule .* index.php [L]

Это хорошо работает в том смысле, что я могу получить доступ к легитимным файлам внутри foo/ и bar/ напрямую, однако я также могу получить доступ к файлам в priv/, что я хочу запретить. Как изменить указанную выше строку, чтобы в основном сказать: «отключить файлы, которые НЕ находятся в priv/»?


РЕДАКТИРОВАТЬ: я пытаюсь избежать необходимости "priv/.htaccess" -> "deny from all", и вместо этого хотел бы обработать это в index.php как любое другое преобразование "Pretty URL".

1 Ответ

6 голосов
/ 06 января 2011

Вы можете добавить еще RewriteCond с условием, чтобы соответствовать ^priv/ и объединить его с ИЛИ:

RewriteCond $0 ^priv/ [OR]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* index.php [L]

Теперь это правило применяется, если совпадающий частичный путь начинается с priv/ или , если запрос не может быть сопоставлен с существующим файлом.

...