我想将我的joomla URL转换为用户友好的URL

时间:2014-12-26 08:57:05

标签: php .htaccess joomla seo

我想将具有组件/ id的joomla(版本2.5)URL结构转换为用户友好或SEO友好的URL。 ?选项= com_mycomponent&安培;查看= MyView的和ID = 98 成 myarticle.php或sometext.php

我确实有一些需要更改的自定义组件。

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

我使用MijoSEF组件将URL自定义为用户友好的URL。对于自定义组件,我在每个自定义组件中创建了rounter.php。这样它就可以处理joomla url结构中的SEO友好URL。毕竟,您需要URL中每个操作的菜单项

http://miwisoft.com/joomla-extensions/mijosef-joomla-seo-sef-urls

点击以上网址下载免费版本并安装 安装后,您可以在网站中看到组件列表。只有当您的组件中包含路由器文件时,才会列出您的组件。 选择组件后,您可以更改网站中的每个网址。 请参阅我根据要求使用的示例路由器。

<?php
/**
 * @package     Joomla.Site
 * @copyright   Copyright (C) 2005 - 2012 Open Source Matters, Inc. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

jimport('joomla.application.categories');

/**
 * Build the route for the com_content component
 *
 * @param   array   An array of URL arguments
 * @return  array   The URL arguments to use to assemble the subsequent URL.
 * @since   1.5
 */
function MycomponentBuildRoute(&$query)
{
    $segments   = array();
    if (isset($query['Itemid'])) {
        $segments[] = $query['Itemid'];
        unset($query['Itemid']);
    }   
    if(isset($query['task'])) {
        $segments[] = $query['task'];
        unset($query['task']);
    }
    if(isset($query['id'])) {
        $db = JFactory::getDbo();
        $aquery = $db->setQuery($db->getQuery(true)
            ->select('alias')
            ->from('#__content')
            ->where('id='.(int)$query['id'])
        );
        $alias = $db->loadResult();
        $query['id'] = $query['id'].':'.$alias;
        $segments[] = $query['id'];
        unset($query['id']);
    }   
    return $segments;
}

/**
 * Parse the segments of a URL.
 *
 * @param   array   The segments of the URL to parse.
 *
 * @return  array   The URL attributes to be used by the application.
 * @since   1.5
 */
function MycomponentParseRoute($segments)
{
    $vars = array();
    $vars['Itemid'] = $segments[0];
    $vars['task']   = $segments[1];
    $vars['id'] = $segments[2];
    return $vars;
}

答案 1 :(得分:1)

对于核心组件和最知名的extensions found on the JED,通过启用.htaccess文件(或等效文件)并更改全局配置设置,可以轻松启用SEF URL。

我建议您阅读以下内容。

  1. Joomla内置了对SEF URL的支持。 (见Search Engine Friendly URLs

  2. 对于自定义组件,您必须添加对SEF URL的支持(如果尚未添加)。 (见Supporting SEF URLs in your component

  3. 最后,如果您需要更多Joomla特定支持,请尝试the Joomla Q&A on StackExchange