【问题标题】:rewriterule image to php script and joomla not working将图像重写为 php 脚本和 joomla 不起作用
【发布时间】: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


【解决方案1】:

由于您的规则在文档根目录的 htaccess 文件中,您不需要调用 cms 文件夹吗?

RewriteRule ^banner/image_(.*)\.gif$ /cms/index.php?option=com_joomlacompanent&img=$1 [L]

另请注意,您会希望该规则相对靠近顶部(但低于任何重定向的规则)。

【讨论】:

  • 这是我尝试的规则之一,但无济于事。我没有在我的问题中列出所有这些。无论如何,我文件的最后一条规则是: RewriteCond %{REQUEST_URI} !^/cms RewriteRule ^(.*)$ cms/$1 [L]
  • @user32823 还有其他 htacces 文件吗?像横幅文件夹中的一个?
  • 没有横幅文件夹。
  • 我还尝试将我的规则放在文件的顶部或末尾附近(在 cms 规则之前)。没办法。
猜你喜欢
  • 2012-03-31
  • 2015-08-13
  • 2020-05-27
  • 2023-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-11
  • 2018-10-23
相关资源
最近更新 更多