我正在尝试将文件重定向到另一个文件,但我不明白htaccess足以使其正常工作。
基本上,例如,如果有人访问mysite.com/i/somefile.png
,我需要将其重定向到mysite.com/view.php?i=somefile
(不带.png扩展名)
我也试图设置它以便此进程只发生本地请求,因此如果图像嵌入在另一个站点上,则不会重定向。
如果有人可以为此提供代码,并且稍微解释一下,以便我对将来的使用有更好的理解,我会非常感激。
答案 0 :(得分:1)
尝试将这些规则添加到文档根目录中的htaccess文件中:
RewriteEngine On
RewriteCond %{HTTP_REFERER} mysite.com [NC]
RewriteCond %{HTTP_REFERER} !/view\.php
RewriteRule ^/?i/(.+)\.png$ /view.php?i=$1 [L]
请注意,这样可以使<img src=
标记内嵌的图像也被内部重写。
问题是(就像你说的那样),该页面的图像嵌入现在不起作用。有没有办法让嵌入工作?
您可以尝试通过修改前缀并重写这些链接,使<a>
个链接与<img>
链接不同:
例如:
<a href="/a/something.png">
<img src="/i/something.png">
</a>
然后:
RewriteEngine On
RewriteRule ^/?a/(.+)\.png$ /view.php?i=$1 [L]
答案 1 :(得分:0)
解决了以下问题:
RewriteCond %{HTTP_HOST} mysite\.com [NC]
RewriteCond %{HTTP_REFERER} !/view\.php
RewriteRule ^/?i/(.+)\.png$ http://mysite\.com/view.php?i=$1 [L]
从直接链接访问图像会重定向到view.php,嵌入仍然有效。
感谢Jon Lin的帮助