将规则图像重写为 PHP 脚本和 Joomla 不起作用



我希望能够提供一些内容基于付款条件的图像。该图像应可在http://example.com/banner/image_**code**.gif(每个客户端的代码都不同。

重写规则应将该链接更改为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 %{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;

我认为这个问题可以标记为已解决。

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

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

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

最新更新