|
|
| 热门搜索 | 曼波虚拟主机 多线主机 主机租用 主机托管 VPS 主机 智能建站 自助建站 曼波建站培训 |
SEF
Wikipedia,自由的百科全书
首先,SEF意思是Search Engine Friendly,就是可以把 原来那一长串网址变成这样:
http://www.site.com/content/view/5/2/
看起来像静态内容~~比较符合各搜索引擎spider的胃口~~
有兴趣的朋友们可以参考mambo官方站那个超长的帖子:http://forum.mamboserver.com/showthread.php?t=79
下面开始:
目录 |
使用SEF方法1:用mambo自带的SEF
1) You must run Apache
服务器端要用Apache.
检查方法:
4.5.1*: 后台〉系统 〉 系统信息
4.5.2: 后台〉帮助 〉System Info(找了半天)
PHP系统环境和Web服务器的类型都在这里了。
SEF在IIS不能运行的,就别浪费时间试了。(IIS请看方法2)
2) You must have mod_rewrite enabled
php必须支持rewrite模块
检查方法:
4.5.1*: 后台〉系统 > 系统信息
4.5.2: 后台〉帮助 〉System Info
点PHP信息那个标签,往下拉,找到Loaded Modules这行(我是没找到,谁找到了告诉我一下).
如果你看到mod_rewrite那你就可以去冲一杯咖啡庆祝一下了~~
如果没找到?不代表一定不行,祈祷一下,继续下一步。
3) Your server must allow .htaccess override服务器必须允许对.htaccess文件的重载
检查方法:删除 .htaccess file里的所有内容,写上下面的代码:
代码:
Redirect /google.html http://www.google.com
然后用浏览网页http://www.yoursite.com/google.html
如果转向了 google.com 那么就OK了~~
4) Set $mosConfig_sef= "1" in configuration.php
打开SEF。
打开方法:
4.5-109:全局配置 > 内容 > 搜索引擎友好链接 打开
4.5.1和4.5.2 :全局配置 > 搜索引擎优化 > 搜索引擎友好链接 打开
5) Rename htaccess.txt to .htaccess
将htaccess.txt重命名为.htaccess
windows下是做不了这件事的,上传以后用FTP软
件重命名!
好了,现在可以试试了。
如果以上方法不成功,请看SEF方法2,利用404page的原理
使用SEF方法2:利用404page的原理
可查看官方论坛帖子:
http://forum.mamboserver.com/showthread.php?t=1255&page=1&pp=10
注意:此方法效果好坏未知!本文最后稍微解释。
1.用Apache的
1. 到后台开启SEF功能
2. 不要把htaccess.txt重命名为.htaccess
3. 打开includes/sef.php,找到
代码:
return $mosConfig_live_site."/".$string;
这句(大约在217行),修改为
return $mosConfig_live_site."/index.php/".$string;
2.用IIS的
在上面的第3步时,代码改为
代码:
return $mosConfig_live_site."/index.php?".$string;
如果不能用那么可能需要在sef.php里加上下面的代码:
$_SERVER['REQUEST_URI'] = (isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : $_SERVER['SCRIPT_NAME']);
// Append the query string if it exists and isn't null
if (isset($_SERVER['QUERY_STRING']) && !empty($_SERVER['QUERY_STRING'])) {
$_SERVER['REQUEST_URI'] .= '?' . $_SERVER['QUERY_STRING'];
}
就在这行的上面:
<pre><nowiki>
if ($mosConfig_sef) {
这样SEF就可以脱离mod_rewrite工作了。
注意:其实这并不是真正的SEF,这种方法还是把URL参数传递给index.php,然后再转给sef.php来进行转换,把地址变成原来"="分割的那种参数形式,再继续传递。这就是为什么还要保留"index.php"这个东西。如果删了这个,服务器是不会用sef.php来转换的。
还有,如果没有index.php后面的"?",有的服务器会把index.php当作一个目录来处理,这样参数也传不到index.php里面,当然也不能转给sef.php来转换了...
至于"?"后面加一个"/",那是sef.php里面判断的一个小问题,只取"/"后面的进行判断
大部分用户可以用"/index.php/"这种形式,效果还不错。
常见问题
1.如果mambo主体使用了SEF,而某组件没有,会有问题吗?
答:不会影响使用,只不过该组件的地址没有优化罢了
2.如果你的mambo不是安装在根目录下,可能要对.htaccess文件作些改动。
.htaccess文件里有这么一段话:
- Uncomment following line if your webserver's URL
- is not directly related to physical file paths.
- Update YourMamboDirectory (just / for root)
- RewriteBase /YourMamboDirectory
意思是如果mambo不是安装在根目录里,就取消“# RewriteBase /YourMamboDirectory”这句话的注释,然后把“YourMamboDirectory”改成mambo安装的目录 如果你的网站在(http://www.yourdomain.com/mambo)
则:
RewriteBase /mambo
或者
如果你的网站在(http://www.yourdomain.com/123/mambo)
则:
RewriteBase /123/mambo
如果你的网站在(http://www.yourdomain.com)
则:
RewriteBase /
3.如果多方尝试还是不行,那么到后台把SEF关掉,然后把.htaccess重命名回来(可能这个文件变为不可见的了,那就用FTP命令强改吧~~呵呵~~)
命令是:
RNFR /.htaccess RNTO /htaccess.txt
如果你用的是cuteftp,你可以选择"tools(工具)"-"Enter FTP Command...(输入ftp命令)"
4.SEF可能与1.0RC2cn版本的TMEdit可视化编辑器有冲突,导致登陆后网站就打不开

