4

我正试图在 Joomla 内部重写一些网址!1.7 开启了 SEF 功能,但似乎无法弄清楚:

存在以下 SEF URL(菜单项):

website.com/local/amsterdam

我想要的是以下内容:

http://website.com/local/amsterdam/trends(不存在)呈现 http://website.com/local/amsterdam?show=trends 同时仍显示第一个 URL。

使用 .htaccess 以下作品(但不显示 SEF URL):

RewriteRule ^local/amsterdam/trends$ index.php?option=com_content&view=article&id=14&Itemid=176&show=trends [L]

但这不会:

RewriteRule ^local/amsterdam/trends$ local/amsterdam?show=trends [L]

我希望在不必使用 id 的情况下找到解决方案,以便为所有城市动态呈现正确的页面。对于在 .htaccess 中执行此操作的任何想法以及实现此目的的任何不同解决方案,我将不胜感激!提前致谢。

4

1 回答 1

0

虽然我最初是在寻找一个 mod-rewrite 解决方案,但我已经找到了一种通过修改(核心)Joomla 来实现相同的方法!路由器。

在 include/router.php 的第 47 行之后:

$path = substr_replace($path, '', 0, strlen(JURI::base(true)));

我添加了以下内容:

$subpages = array("trends","other"); //Add URL segments you want to reroute
foreach ($subpages as $subpage):            
     if (strstr($path, "/".$subpage)) :
          $path = str_replace("/".$subpage, "", $path);
          $vars['show'] = $subpage;
     endif;
endforeach;

现在在加载http://www.website.com/local/amsterdam/trends时,会显示此 URL,而页面http://www.website.com/local/amsterdam实际上是使用 ?show=trends 参数加载的。

对我来说,即使修改了核心文件,这也是比使用 mod-rewrite 更灵活的解决方案。您可能希望使用一些条件语句仅在某些条件下运行此代码。希望能帮助到你。

于 2011-10-26T10:39:22.453 回答