将本地请求重定向到另一个文件

时间:2012-10-04 20:55:17

标签: apache .htaccess redirect

我正在尝试将文件重定向到另一个文件,但我不明白htaccess足以使其正常工作。

基本上,例如,如果有人访问mysite.com/i/somefile.png,我需要将其重定向到mysite.com/view.php?i=somefile(不带.png扩展名)

我也试图设置它以便此进程只发生本地请求,因此如果图像嵌入在另一个站点上,则不会重定向。

如果有人可以为此提供代码,并且稍微解释一下,以便我对将来的使用有更好的理解,我会非常感激。

2 个答案:

答案 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的帮助