用Joomla SEF重写自定义网址

时间:2011-10-24 10:34:51

标签: php .htaccess joomla joomla1.7 joomla-sef-urls

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

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

website.com/local/amsterdam

我想要的是以下内容:

http://website.com/local/amsterdam/trends(不存在) 渲染 http://website.com/local/amsterdam?show=trends 同时仍显示第一个网址。

使用.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中做任何想法以及实现这一目标的任何不同解决方案!提前谢谢。

1 个答案:

答案 0 :(得分:0)

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

在包含/ 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时,会在页面http://www.website.com/local/amsterdam实际加载?show = trends参数时显示此网址。

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