今天对公司台湾主站的url地址进行优化.主站采用的是joomla,而joomla初建好后用的url对搜索引擎非常的不友好.
Joomla中的SEF说白了就是一个对URL的重写的过程将原来参数众多,层次很深的URL改写为一个简单的更容易被记住被搜索的URL。通过分析Joomla站点的URL结果就会发现规律很明显:
域名+index.php?option=com_content&task=category§ionid=4&id=13&Itemid=27
以上就是一个最普通不过的URL,其中包含的元素有option(组件参数,告诉系统一下内容来自哪个组件)、task(任务参数,组件内执行什么任务上面的例子中代表执行分类列表,sectionid内容的单元号JOOMLA特有,id,itemid项目号)。Joomla本身就自带一个URL优化的组件,也就是一个函数实现对上述地址的重写为index.php/content/view/4/13/27.html,是不是貌似静态,严格来说应该是伪装的静态。
我开启了joomla自带的sef,方法如下:
1. 必须使用apache作为你的服务器,IIS是不支持的。
2. 开启apache的rewrite功能,加载重写模块
LoadModule rewrite_module modules/mod_rewrite.so
3. 设置<Directory "/htdocs/">中的AllowOverride None为AllowOverride All
4. 将htaccess.txt变为.htaccess.
5. 设置RewriteBase /为RewriteBase /site dir,将RewriteCond %{REQUEST_URI} ^(/ /component/option,com) [NC,OR] 修改为RewriteCond %{REQUEST_URI} ^(/site dir/component/option,com) [NC,OR]因为你的web不是放在root目录下,而是放在site dir
6. Set $mosConfig_sef= "1" in configuration.php
如果你的joomla系统放在根目录下,RewriteBase /不变,另外RewriteCond %{REQUEST_URI} ^(/component/option,com) [NC,OR]不变,只需去掉前面的注释即可。
然后重启一下apache.
这时会发现地址确实被重写了.变成了http://www.yourwebsite/content/view/286/这样的.但正如上文所言,这只是伪静态的.并且发生了404错误.