不是单入口 全站url 自定义问题讨论?


问题描述:
要求实现全站url 的自定义。
前提:
1、产品不是单入口(index.php,user.php,article.php,cate.php。。。。)
2、要考虑seo

个人想法:
给产品加个单入口,把所有的跳转都跳到一个入口, 然后进行分发。
但是这其中牵涉一个 header 跳转问题, 可能会影响SEO (没验证)
举例: 有 user.php article.php
1、后台确定 user.php 自定义成 www.xx.com/user www.xxx.com/article
2、请求 www.xx.com/user www.xxx.com/article 都rewrite 到index.php ,通过数据库查询然后拼接把 他 header 到 user.php 或者 articel.php (是跳转)
3、以上思路 很大程度上会影响网站权重,把蜘蛛给跳晕了, 大家有什么好的办法吗 ?

描述可能啰嗦了, 总结一句, 就是已经上线的产品, 不是单入口, 如果想实现全站url自定义(是全站自定义) 有什么好的办法...

php seo

光DD战士 12 years, 5 months ago

在索引文件index.php中引入一个控制器派发器Dispatcher,用来统一调度零碎的php文件
下面是一个派发器类,可以根据你们网站实际情况,对executeAction方法进行完善

   
  final class Dispatcher
  
{
private static $request = array();
private static $params = array();

/**
* 派发
* 以$_REQUEST为参数 传入ssss
*/
public static function dispatch()
{
self::$request = $_GET;

return self::executeAction(self::getController(), self::getAction(), self::getParams());
}

/**
* 获得控制器名称
*/
public static function getController()
{
// if(参数 == 'job') 然后从初始化的jobs调用
return isset(self::$request['job']) && !empty(self::$request['job']) ? self::$request['job'] : 'Index'; //以后改成常量
}

/**
* 获得当前动作
*/
public static function getAction()
{
//控制器中的动作
return isset(self::$request['action']) && !empty(self::$request['action']) ? self::$request['action'] : 'index';
}

/**
* 获得动作参数
*/
public static function getParams()
{
$parmas = array();
$params = self::$request;
if(array_key_exists('job', $params))
unset($params['job']);
if(array_key_exists('action', $params))
unset($params['action']);
return self::$params = $params;
}

/**
* 执行动作
*/
public static function executeAction($controller, $action, $params)
{
//组装调用各个零碎的php文件
//...
}
}

教え子D母 answered 12 years, 5 months ago

Your Answer