Разрешить хотлинкинг, но перенаправлять, когда я сам реферал! - PullRequest
2 голосов
/ 28 февраля 2010

Я хочу, используя htaccess, разрешить хотлинкинг, НО, если кто-то просматривает изображение на моем сайте, я хочу перенаправить его в "размещенную" версию изображения, где я отображаю навигацию и т. Д.

Так что, по сути, любая горячая ссылка с внешнего сайта не будет затронута, но если кто-то просматривает изображение на моем сервере напрямую, т.е. www.domain.com/image.jpg itll redirect. Я также хочу убедиться, что я могу правильно отображать изображения с моего сайта.

Может кто-нибудь помочь?

РЕДАКТИРОВАТЬ: Вот код, который у меня есть в настоящее время

RewriteCond %{REQUEST_FILENAME} \.jpg$
RewriteCond %{HTTP_REFERER} =""
RewriteRule ^userpics/covers/(.*).jpg$ /view/$1.html [R=301]

RewriteRule ^view/(.*).html$ /view.html?img=$1 [L]

Спасибо

Ответы [ 3 ]

2 голосов
/ 28 февраля 2010

Использовать .htaccess

RewriteEngine on
RewriteCond %{REQUEST_URI} \.(jpg|png|gif)$
RewriteCond %{HTTP_REFERER} ^https?://yoursite\.com/.*$ [NC]
RewriteRule ([^/]+)$ url_to_script?img=$1

Вы могли бы упростить

RewriteCond %{HTTP_REFERER} ^https?://yoursite\.com/.*$ [NC]

до

RewriteCond %{HTTP_REFERER} yoursite\.com [NC]

А правило можно записать как

 RewriteRule (.*) url_to_script?img=$1

если вам нужно включить путь к изображению в свой параметр.

0 голосов
/ 28 февраля 2010

Теперь вам нужно проверить реферер, потому что URL всегда является URL вашего изображения, так как это запрос http. Вы могли бы пойти с чем-то вроде этого:

RewriteCond %{REQUEST_FILENAME} \.(jpg|png|gif)$
RewriteCond %{HTTP_REFERER} =""
RewriteRule (.*) http://someurl.com [R=301]
0 голосов
/ 28 февраля 2010

Вы должны использовать mod_rewrite, если HTTP_REFERRER пуст, а затем перенаправить на /image-with-nav.php?image=$1
Попробуйте что-то вроде этого
RewriteEngine on

RewriteCond %{HTTP_REFERER} ^$

.* image-with-nav.php?image=$1 [L]

...