2012-03-19 8 views
0

Я надеялся на некоторые советы о том, как ограничить доступ пользователей к подобластям.
В субдоменах должны быть доступны только с действительными $_GET парами, как www.domain.com/index.php?mykey=12345Как ограничить доступ пользователей к поддоменам

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

file_get_contents('/var/www/'. $requested_file) ; 
RewriteRule ^(.*)$ http://www.domain.com/index.php/$1 

Очевидная угроза безопасности я знаю. Это вроде работает, но имеет проблемы с изображениями, когда он проходит весь трафик через f_g_c().

Надеюсь, существует более простой способ сделать это.

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

ответ

0

(при условии, что вы используете Apache)

Если вы хотите, чтобы игнорировать изображения, вы можете добавить несколько условий для этого правила, так это выглядит примерно так:

RewriteCond %{REQUEST_URI} !\.(png|jpe?g|gif|js)$ [NC] 
RewriteRule ^(.*)$ http://www.domain.com/index.php/$1 

Это делает так что правило не будет применяться, если запрошенный URI имеет определенное расширение. Кроме того, когда ваш RewriteRule имеет цель, которая начинается с http: //, она по своей сути перенаправляет браузер вместо внутренней перезаписи URI. Это означает, что когда кто-то вводит http://www.domain.com/some-path в адресную строку URL своего браузера, он перенаправляется, и в их адресной строке теперь написано http://www.domain.com/index.php/some-path. Если вы удалите бит домена, он будет внутренне переписан (условие для предотвращения циклирования):

RewriteCond %{REQUEST_URI} !^/index.php 
RewriteRule ^(.*)$ /index.php/$1 [L] 
Смежные вопросы