【发布时间】:2015-01-23 17:21:22
【问题描述】:
我希望能够提供一些内容基于付款条件的图像。
图片应该在http://example.com/banner/image_**code**.gif上可用
(每个客户的代码都不同。)
rewriterule 应该将该链接更改为 index.php?option=com_joomlacomponent&img=**code**
我写了一个我应该很简单的规则来完成它,但它不起作用。
我将重写规则添加到文档根目录中的现有 .htaccess 中。 .htaccess 包含添加标准斜杠 www 的规则,以将旧的 php 文件重定向到新的 php 文件,并将安装 joomla 的目录的名称添加到路径中。
文件/文件夹的结构如下:
/.htaccess
/cms/.htaccess (joomla standard .htaccess)
/cms/* (joomla files)
我尝试了以下规则:
RewriteRule ^banner/image_(.*)\.gif$ index.php?option=com_joomlacompanent&
img=$1
我得到了 joomla 的主页(添加各种标志没有帮助,例如 [L]。)
我尝试添加一个 rewritecond 来检查条件是否满足:
RewriteCond %{REQUEST_URI} /banners/image_(.*).gif$
RewriteRule . http://othersite.com/%1 [L]
然后我被重定向到其他站点/代码,其中代码是初始 url 中的代码。
所以我想知道我是否遗漏了一些重要的重写概念,或者此规则与其他规则或 joomla .htaccess 之间是否存在一些干扰。
编辑:我发现了问题所在。 我错误地认为我的 php 可以暂时提供调试消息(回声)而不是真实图像。 可能 joomla 不允许重定向到主页。
现在我在文档根目录的 .htaccess 中使用以下规则:
RewriteCond %{REQUEST_URI} /banner/image_(.*).gif$
RewriteRule .* index.php?option=com_joomlacomponent&img=%1
并且在组件php文件中:
$img = 'path to an img file';
header('Content-Type: image/gif');
readfile($img);
$mainframe =& JFactory::getApplication();
$mainframe->close();
exit;
我认为该问题可以标记为已解决。
【问题讨论】:
-
嗨!一段时间以来,Joomla 拥有自己的 StackExchange 站点:joomla.stackexchange.com。我建议你在那里问你未来的joomla相关问题。
-
对我来说,不清楚您要做什么。您是否尝试返回 gif 类型的文档?我的意思是,如果您知道代码的价值,请称之为
$code,为什么不直接访问该网址?http://example.com/banner/image_' . $code . '.gif'您要下载文件吗?你为什么要重写? -
@Elin 我想为每个用户/客户提供定制的图像。我可以做类似 example.com/…" /> 的事情,但我认为使用类似图像的 url 而不是 php url 会更加用户友好。图像会及时更改,因此每次提供图像时都必须进行检查。重写对我来说似乎不是一项艰巨的任务,它仅在使用一个 .htaccess 时有效。问题是对 joomla .htaccess 的“干扰”。由于没有简单的解决方案,我将使用 php url。
-
当您说“类似图像的 url”时,您的意思是在呈现的 html 中以 gif 结尾吗?这张图片在另一个网站上?而且您想返回一个只有图像而不是包含图像的 html 的文档,对吗? Joomla 确实有一个您可能想要使用的图像文档类型。如果您只想伪装名称,则可以查看网络链接中的路由是如何工作的。当您发出请求时,用户特定的字符串是来自 Joomla 内部还是来自其他站点?
-
@elin 我必须向客户提供 html 代码,以便在他们想要的位置显示横幅。我只是想给他们 example.com/clientitem" >example.com/banner/image_1a2bcf5e.gif" /> 而不是 example.com/clientitem" > 无论如何,我编辑了我的问题并添加了我做错了什么。 (我不确定我在那里添加解决方案是否正确,我找不到添加答案按钮,我对这里管理登录和注销的方式有点困惑。)
标签: apache .htaccess joomla url-rewriting