如何在Apache环境中配置重写规则
Apache重写规则环境URL静态化是一个有利于搜索引擎的设置。通过URL静态化,将原来的动态php页面转化为静态HTML页面。当然,这里的静态化是一种伪静态化。
目的只是增加搜索引擎的搜索量,Discuz,Comsenz的产品!SupeSite/X-Space、ECShop、SupeV、UCHome等。都支持这个功能。当然,这个功能还需要服务器环境的支持。
下面介绍如何在Apache服务器下配置URL静态的重写规则。
当然,这里有两种情况。一种是独立主机用户,拥有主机上的管理权限,配置起来更方便。(注:此处使用Discuz!以6.1.0的重写规则为例,
其他产品的重写规则将在后面列出。
首先确定您使用的是哪个Apache版本,以及是否加载了mod_Rewrite模块。
Apache 1.x的用户应该检查conf/httpd.conf中是否存在以下两段代码:
LoadModule Rewrite_module libexec/mod_Rewrite.so
addmodulemod _ rewrite . c Apache 2 . x的用户应该检查conf/httpd.conf中是否存在以下代码:
LoadModule Rewrite_module modules/mod_Rewrite.so
如果存在,将下面的代码添加到配置文件中(通常是conf/httpd.conf)。此时请注意,如果网站使用是由VirtualHost定义的,请将其添加到虚拟主机配置中,即虚拟主机。
如果在虚拟主机配置之外添加,它可能不可用。修改后重启Apache。
IfModule mod_Rewrite.c
RewriteEngine On
RewriteRule ^(.*)/archiver/((fid|tid)-[\w\-]+\.html)$ $1/archiver/index.php?$2
RewriteRule ^(.*)/forum-([0-9]+)-([0-9]+)\.html$ $1/forumdisplay.php?fid=$2page=$3
RewriteRule ^(.*)/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ $1/viewthread.php?tid=$2extra=page\%3D$4page=$3
RewriteRule ^(.*)/space-(username|uid)-(.+)\.html$ $1/space.php?$2=$3
RewriteRule ^(.*)/tag-(.+)\.html$ $1/tag.php?name=$2
/IfModule如果没有安装mod_Rewrite,可以重新编译Apache,并将-enable-rewrite=shared添加到原来的configure中。
然后将上面的代码添加到Apache配置文件中。
另一种用户是Apache虚拟主机用户。
在开始以下设置之前,请先咨询您的空间服务提供商,空间是否支持重写,是否支持解析。htaccess文件,否则即使按照以下方法设置也不会使用。
检查。htaccess文件存在于论坛所在的目录中。如果不存在,请手动创建该文件。在Win32系统下,你不能创建。htaccess文件。可以从其他系统复制。
或者在Discuz.net的技术支持专栏下载该文件。编辑和修改。htaccess文件添加以下内容:
#打开重写引擎模式
RewriteEngine On
#将以下语句中的/discuz更改为您的论坛目录地址。如果程序放在根目录下,请将/discuz改为/
RewriteBase /discuz
#重写系统规则,请勿修改。
RewriteRule ^archiver/((fid|tid)-[\w\-]+\.html)$ archiver/index.php?$1
RewriteRule ^forum-([0-9]+)-([0-9]+)\.html$ forumdisplay.php?fid=$1page=$2
RewriteRule ^thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ viewthread.php?tid=$1extra=page\%3D$3page=$2
RewriteRule ^space-(username|uid)-(.+)\.html$ space.php?$1=$2
重写者^tag-(.)\.html $ tag.php?Name=$1添加内容时,请按照上面的提示,修改论坛所在的路径,然后保存。上传。htaccess文件到论坛所在的目录。
然后进入论坛系统设置的搜索引擎优化,根据需要开启URL静态功能。
下面简单介绍一下其他一些产品的重写规则。
SupeSite/X-Space6.0 UC规则
Apache独立主机用户:
IfModule mod_Rewrite.c
RewriteEngine On
# # #重写系统规则,请不要修改。
RewriteRule ^/([0-9]+)/spacelist(.+)$ /index.php?uid/$1/action/spacelist/type$2 [L]
RewriteRule ^/([0-9]+)/viewspace(.+)$ /index.php?uid/$1/action/viewspace/itemid$2 [L]
RewriteRule ^/([0-9]+)/viewbbs(.+)$ /index.php?uid/$1/action/viewbbs/tid$2 [L]
RewriteRule ^/([0-9]+)/(.*)$ /index.php?uid/$1/$2 [L]
RewriteRule ^/([0-9]+)$ /index.php?uid/$1 [L]
RewriteRule ^/action(.+)$ /index.php?action$1 [L]
RewriteRule ^/category(.+)$ /index.php?action/category/catid$1 [L]
RewriteRule ^/viewnews(.+)$ /index.php?action/viewnews/itemid$1 [L]
RewriteRule ^/viewthread(.+)$ /index.php?action/viewthread/tid$1 [L]
RewriteRule ^/mygroup(.+)$ /index.php?action/mygroup/gid$1 [L]
/IfModuleApache 虚拟主机用户:
### 将RewriteEngine 模式打开
RewriteEngine On
### 修改以下语句中的/SupeSite 修改为你的SupeSite目录地址,如果程序放在根目录中,请将/SupeSite 修改为/
RewriteBase /
### Rewrite 系统规则请勿修改
RewriteRule ^([0-9]+)/spacelist(.+)$ index.php?uid/$1/action/spacelist/type$2 [L]
RewriteRule ^([0-9]+)/viewspace(.+)$ index.php?uid/$1/action/viewspace/itemid$2 [L]
RewriteRule ^([0-9]+)/viewbbs(.+)$ index.php?uid/$1/action/viewbbs/tid$2 [L]
RewriteRule ^([0-9]+)/(.*)$ index.php?uid/$1/$2 [L]
RewriteRule ^([0-9]+)$ index.php?uid/$1 [L]
RewriteRule ^action(.+)$ index.php?action$1 [L]
RewriteRule ^category(.+)$ index.php?action/category/catid$1 [L]
RewriteRule ^viewnews(.+)$ index.php?action/viewnews/itemid$1 [L]
RewriteRule ^viewthread(.+)$ index.php?action/viewthread/tid$1 [L]
RewriteRule ^mygroup(.+)$ index.php?action/mygroup/gid$1 [L]ECShop2.6.0 规则
Apache 独立主机用户:
IfModule mod_Rewrite.c
RewriteEngine On
RewriteRule ^(.*)/index.html$ $1/index.php
RewriteRule ^(.*)/category$ $1/index.php [L]
RewriteRule ^(.*)/feed-c([0-9]+).xml$ $1/feed.php?cat=$2 [L]
RewriteRule ^(.*)/feed-b([0-9]+).xml$ $1/feed.php?brand=$2 [L]
RewriteRule ^(.*)/feed.xml$ $1/feed.php
RewriteRule ^(.*)/category-([0-9]+)-b([0-9]+)-min([0-9]+)-max([0-9]+)-attr([^-]*)-([0-9]+)-(.+)-([a-zA-Z]+)(.*)\.html$ $1/category.php?id=$2brand=$3price_min=$4price_max=$5filter_attr=$6page=$7sort=$8order=$9
RewriteRule ^(.*)/category-([0-9]+)-b([0-9]+)-min([0-9]+)-max([0-9]+)-attr([^-]*)\.html$ $1/category.php?id=$2brand=$3price_min=$4price_max=$5filter_attr=$6
RewriteRule ^(.*)/category-([0-9]+)-b([0-9]+)-([0-9]+)-(.+)-([a-zA-Z]+)(.*)\.html$ $1/category.php?id=$2brand=$3page=$4sort=$5order=$6
RewriteRule ^(.*)/category-([0-9]+)-b([0-9]+)-([0-9]+)(.*)\.html$ $1/category.php?id=$2brand=$3page=$4
RewriteRule ^(.*)/category-([0-9]+)-b([0-9]+)(.*)\.html$ $1/category.php?id=$2brand=$3
RewriteRule ^(.*)/category-([0-9]+)(.*)\.html$ $1/category.php?id=$2
RewriteRule ^(.*)/goods-([0-9]+)(.*)\.html$ $1/goods.php?id=$2
RewriteRule ^(.*)/article_cat-([0-9]+)-([0-9]+)-(.+)-([a-zA-Z]+)(.*)\.html$ $1/article_cat.php?id=$2page=$3sort=$4order=$5
RewriteRule ^(.*)/article_cat-([0-9]+)-([0-9]+)(.*)\.html$ $1/article_cat.php?id=$2page=$3
RewriteRule ^(.*)/article_cat-([0-9]+)(.*)\.html$ $1/article_cat.php?id=$2
RewriteRule ^(.*)/article-([0-9]+)(.*)\.html$ $1/article.php?id=$2
RewriteRule ^(.*)/brand-([0-9]+)-c([0-9]+)-([0-9]+)-(.+)-([a-zA-Z]+)\.html $1/brand.php?id=$2cat=$3page=$4sort=$5order=$6
RewriteRule ^(.*)/brand-([0-9]+)-c([0-9]+)-([0-9]+)(.*)\.html $1/brand.php?id=$2cat=$3page=$4
RewriteRule ^(.*)/brand-([0-9]+)-c([0-9]+)(.*)\.html $1/brand.php?id=$2cat=$3
RewriteRule ^(.*)/brand-([0-9]+)(.*)\.html $1/brand.php?id=$2
RewriteRule ^(.*)/tag-(.*)\.html $1/search.php?keywords=$2
RewriteRule ^(.*)/snatch-([0-9])\.html$ $1/snatch.php?id=$2
RewriteRule ^(.*)/group_buy-([0-9])\.html$ $1/group_buy.php?act=viewid=$2
/IfModule
Apache 虚拟主机用户:
RewriteEngine On
#RewriteBase /
# direct one-word access
RewriteRule ^index\.html$ index\.php [L]
RewriteRule ^category$ index\.php [L]
# access any object by its numeric identifier
RewriteRule ^feed-c([0-9]+)\.xml$ feed\.php\?cat=$1 [L]
RewriteRule ^feed-b([0-9]+)\.xml$ fe