2014-02-05 2 views
0

я ПОДСТРАНИЦЫ какКак блокировать файлы с доступом по URL

mypage.com/subpage 

Но это только псевдоним, и все файлы в /data/subpage. И только файл необходимо получить доступ пользователя сам index.php и все остальные файлы импортируются самого индекса, в зависимости от атрибутов (GET, сессии и т.п.)

Я хочу это:

  • Пусть пользователю доступ index.php с помощью /subpage но не /data/subpage
  • не позволяет пользователю получить быстрый доступ ничего /data/subpage и ее подпапки
  • еще позволяет index.php получить доступ к этим файлам.

Надеюсь, я написал его понятным образом.

Спасибо за вашу помощь

EDIT: Мой текущий .htaccess (находится в корне)

RewriteEngine On 

RewriteRule ^subpage$ /data/subpage/index.php [L] 
RewriteRule ^subpage/(?:([^/]+)/?|)(?:([^/]+)/?|)$ /data/subpage/index.php?section=$1&subsection=$2 [L] 
RewriteRule ^edit/subpage/?(?:([^/]+)/?|)(?:([^/]+)/?|)$ /data/subpage/index.php?edit=true&section=$1&subsection=$2 [L] 
+0

Несомненно, это отредактировано – Gomi

ответ

1

Try:

RewriteCond %{THE_REQUEST} \ /+data/subpage/ 
RewriteRule^- [L,R=404] 

так, что любые прямые запросы на /data/subpage/ результатов в 404. Вы можете заменить R=404 на F, если вы предпочитаете его ult в «403».


EDIT:

Это своего рода право, спасибо. Я, как зритель, не могу получить доступ к этим файлам, но моя страница также не имеет доступа к нему (например, для изображений). Есть ли способ сделать это?

Это не ваша страница доступ к этим файлам, это ваша страница говорит браузер к ним доступ. Это означает единственный способ узнать, что страница, на которую браузер обращается к ним, - это проверить референта. К сожалению, референт может быть тривиально подделан, поэтому это не гарантирует, что люди не могут получить доступ ко всем вашим файлам.

RewriteCond %{THE_REQUEST} \ /+data/subpage/ 
RewriteCond %{HTTP_REFERER} !^http://yourdomain.com/subpage/(index\.php)? 
RewriteRule^- [L,R=404] 
+0

Это своего рода право, спасибо. Я, как зритель, не могу получить доступ к этим файлам, но моя страница также не имеет доступа к нему (например, для изображений). Есть ли способ сделать это? – Gomi

+1

@Gomi Обратите внимание, что это не ваша ** страница **, которая обращается к этим файлам, это браузер клиента. Просто ваша страница говорит браузеру, чтобы загрузить его. –

+0

Да, вы правы, я не думал об этом должным образом. Я только что изменил его - я добавил расширения файлов, к которым я действительно не хочу получать доступ (например, файлы XML). Большое спасибо – Gomi

Смежные вопросы