2013-03-06 3 views
1

У меня есть файл PHP на моем сервере, и я не хочу, чтобы кто-либо, не имея правильного обращения, обращался к нему..htaccess Block PHP Referer Доступ к файлам

Это мое действующее правило, которое работает.

RewriteCond %{REQUEST_URI} .streamer\.php* 
RewriteCond %{HTTP_REFERER} !.*domain.com.* 
RewriteRule .* - [F] 

Это правило достаточно дружественным для mod_rewrite? Или нужно немного убирать или убирать? Он работает, но я не эксперт с mod_rewrite, и я уверен, что может быть лучший код, чем мой метод.

+0

Источники могут быть обмануты. Зачем вам это нужно? Вероятно, есть более простой (и более безопасный) способ, например сеансы. – Ryan

+0

Я знаю, что они могут быть подделаны, я не беспокоюсь о том, что я могу вводить сеансы в файл php, но сейчас я больше заинтересован в том, чтобы убрать мой существующий код. – C0nw0nk

+0

Так аккуратно, что вверх и использовать сеансы. (Нет необходимости даже, чтобы у всех были ссылки.) – Ryan

ответ

1

Вы можете комбинировать условие %{REQUEST_URI} с самим правилом, и вы можете очистить Referer регулярное выражение:

RewriteCond %{HTTP_REFERER} !^https?://[^/]+\.domain\.com/? [NC] 
RewriteRule .streamer\.php - [F] 

Обратите внимание, что это будет также блокировать пустые Referers, как если скопировать и вставить ссылку прямо в адресную строку URL-адреса браузера. Если вы хотите разрешить пустые ссылки, вам нужно добавить дополнительные условия:

RewriteCond %{HTTP_REFERER} ^$ [OR] 
RewriteCond %{HTTP_REFERER} !^https?://[^/]+\.domain\.com/? [NC] 
RewriteRule .streamer\.php - [F] 
+0

Спасибо, что работает очень хорошо. – C0nw0nk

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