1

我实际上是在做一个代理——你把 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

我一直无法找到任何解决方案 - 我认为 /s 可能会给我带来问题。

4

1 回答 1

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]
于 2013-10-17T03:32:38.387 回答