你会怎么写这个htaccess rewriterule?

时间:2013-10-17 03:29:57

标签: apache .htaccess mod-rewrite

我实际上是在创建代理 - 您将URL放在路径的末尾,我的服务器下载并显示它。

如何重写http://www.example.com/search/dl/http://www.example.com/image.png

http://www.example.com/search/download.php?url=http://www.example.com/image.png

我一直无法找到任何解决方案 - 我认为这可能会给我带来麻烦。

1 个答案:

答案 0 :(得分:0)

在文档根目录的htaccess文件中,您需要:

RewriteEngine On
RewriteCond %{THE_REQUEST} \ /search/dl/(http://[^\ \?]+)
RewriteRule ^search/dl/ /search/download.php?url=%1 [L]

您需要匹配%{THE_REQUEST}变量,因为当请求URI被规范化时,http:后面的两个斜杠会被删除,因此您可以在重写规则的正则表达式模式中匹配它。


如果将这些规则放在/search/目录中,它们根本不起作用。您需要从尝试匹配它的模式中删除“搜索”,因为URI中将缺少“搜索”,因此您无法与其匹配:

RewriteEngine On
RewriteCond %{THE_REQUEST} \ /search/dl/(http://[^\ \?]+)
RewriteRule ^dl/ /search/download.php?url=%1 [L]