我实际上是在做一个代理——你把 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 可能会给我带来问题。
我实际上是在做一个代理——你把 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 可能会给我带来问题。
在文档根目录的 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]