php - Mod Rewrite 并将 URL 作为参数传递

标签 php mod-rewrite url-rewriting

我在重写 mod 时遇到了一个小问题。我的一个 friend 正在编写一个允许您上传图片的脚本。

我们想要做的是允许用户将域名附加到直接图像链接,然后脚本将从提供的 URL 中检索图像。

例如,如果图像位于:http://www.test.com/image.jpg ,添加 domain.com/http://www.test.com/image.jpg 将允许脚本检索该 url (test.com) 以获取我们想要的图像。

编辑: HTTP 位于 URL 前面,因为我不希望用户必须手动删除 HTTP。他们在浏览器中看到一张图片,在其前面附加“domain.com”、http 和所有内容,然后脚本检索该图片并将其存储在我们的服务器上。

我使用的规则是:

RewriteRule ^([\w|.|/]+(jpg|png|gif))$ /upload.php?url=http://$1 [B,L,NC,R=302]

这正确匹配了 URL,但 http://中的冒号会导致问题。

如果用户输入:domain.com/www.test.com/image.jpg,它有效。

如果用户输入:domain.com/http://www.test.com/image.jpg,它不起作用,我得到一个 403 禁止页面(Windows 上的 XAMPP)。

如果用户输入:domain.com/http//www.test.com/image.jpg,它有效(http 中没有冒号)。

编辑: 通过工作,我的意思是如果我在本地测试它,我可以正确地看到我在 $_GET['url'] 参数中传递的 URL,而不是看到错误 403。

你能告诉我这条规则有什么问题以及如何解决吗?或者任何替代解决方案来实现我们想要的行为?

谢谢。

最佳答案

嗯,我想我已经找到问题所在了。这不是正则表达式,也不是 mod_rewrite 本身。

所以它是 Windows 上的 Apache 中的一个错误,已被声明为 WONTFIX。

有关引用,请参阅 this StackOverflow thread:this bug report

我发布了我发现的内容,并将考虑回答这个问题。谢谢大家!

关于php - Mod Rewrite 并将 URL 作为参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10440048/

相关文章:

php - 如何在另一个网站上显示Liferay数据库中存储的数据?

php - 具有 Eloquent ORM 的 Slim 3 - 集合中不存在关系

php - .htaccess twitter 或 facebook URL 命名约定

正则表达式匹配除特定路径之外的所有 https URL

php - htaccess 将 slug 重写为 seo url

php - 处理未知大小的 PHP 数组

javascript - 存储文件夹层次结构 laravel

javascript - Backbone.js 和 mod 重写

apache - 重写别名目录

JavaScript url 重写器