我的服务器同时开着论坛和商城,由于为了避免权重分散,所以把论坛放在商城目录下。
商城和论坛使用的程序不同,rewrite规则不同,想同时开启rewrite,在apache httpd.conf里修改配置后总有一个要出问题。
后然想Apache应该不会这么笨吧,应该能实现这个功能:网上搜索了一下,发现其实很简单,把各自的rewrite规则写入 .htaccess文件放在各自目录下就行了,不一定要在httpd.conf(开始思路局限在一个用.htaccess实现,一个用httpd.conf实现)。
比如:我的discuz x1.5论坛的.htaccess内容如下(后台配置里有模板)
# 将 RewriteEngine 模式打开
RewriteEngine On
# 修改以下语句中的 /topic 为自己的目录
RewriteBase /topic
# Rewrite 系统规则请勿修改
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^topic-(.+)\.html$ portal.php?mod=topic&topic=$1&%1
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^article-([0-9]+)-([0-9]+)\.html$ portal.php?mod=view&aid=$1&page=$2&%1
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^forum-(\w+)-([0-9]+)\.html$ forum.php?mod=forumdisplay&fid=$1&page=$2&%1
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ forum.php?mod=viewthread&tid=$1&extra=page\=$3&page=$2&%1
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^group-([0-9]+)-([0-9]+)\.html$ forum.php?mod=group&fid=$1&page=$2&%1
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^space-(username|uid)-(.+)\.html$ home.php?mod=space&$1=$2&%1
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^([a-z]+)-(.+)\.html$ $1.php?rewrite=$2&%1
然后在论坛后台管理-----全局配置-优化设置,把相应的版块选上勾,这样伪静态就成功开启了。
如果是独立主机就更简单了,可以直接把相应的rewrite规则代码考到apache 的httpd.conf文件里即可。如下:
<IfModule mod_rewrite.c>
RewriteEngine
On
RewriteCond
%{QUERY_STRING} ^(.*)$
RewriteRule
^(.*)/topic-(.+)\.html$
$1/portal.php?mod=topic&topic=$2&%1
RewriteCond
%{QUERY_STRING} ^(.*)$
RewriteRule
^(.*)/article-([0-9]+)-([0-9]+)\.html$
$1/portal.php?mod=view&aid=$2&page=$3&%1
RewriteCond
%{QUERY_STRING} ^(.*)$
RewriteRule
^(.*)/forum-(\w+)-([0-9]+)\.html$
$1/forum.php?mod=forumdisplay&fid=$2&page=$3&%1
RewriteCond
%{QUERY_STRING} ^(.*)$
RewriteRule
^(.*)/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$
$1/forum.php?mod=viewthread&tid=$2&extra=page\=$4&page=$3&%1
RewriteCond
%{QUERY_STRING} ^(.*)$
RewriteRule
^(.*)/group-([0-9]+)-([0-9]+)\.html$
$1/forum.php?mod=group&fid=$2&page=$3&%1
RewriteCond
%{QUERY_STRING} ^(.*)$
RewriteRule
^(.*)/space-(username|uid)-(.+)\.html$
$1/home.php?mod=space&$2=$3&%1
RewriteCond
%{QUERY_STRING} ^(.*)$
RewriteRule
^(.*)/([a-z]+)-(.+)\.html$
$1/$2.php?rewrite=$3&%1
</IfModule>
商城和论坛使用的程序不同,rewrite规则不同,想同时开启rewrite,在apache httpd.conf里修改配置后总有一个要出问题。
后然想Apache应该不会这么笨吧,应该能实现这个功能:网上搜索了一下,发现其实很简单,把各自的rewrite规则写入 .htaccess文件放在各自目录下就行了,不一定要在httpd.conf(开始思路局限在一个用.htaccess实现,一个用httpd.conf实现)。
比如:我的discuz x1.5论坛的.htaccess内容如下(后台配置里有模板)
# 将 RewriteEngine 模式打开
RewriteEngine On
# 修改以下语句中的 /topic 为自己的目录
RewriteBase /topic
# Rewrite 系统规则请勿修改
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^topic-(.+)\.html$ portal.php?mod=topic&topic=$1&%1
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^article-([0-9]+)-([0-9]+)\.html$ portal.php?mod=view&aid=$1&page=$2&%1
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^forum-(\w+)-([0-9]+)\.html$ forum.php?mod=forumdisplay&fid=$1&page=$2&%1
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ forum.php?mod=viewthread&tid=$1&extra=page\=$3&page=$2&%1
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^group-([0-9]+)-([0-9]+)\.html$ forum.php?mod=group&fid=$1&page=$2&%1
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^space-(username|uid)-(.+)\.html$ home.php?mod=space&$1=$2&%1
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^([a-z]+)-(.+)\.html$ $1.php?rewrite=$2&%1
然后在论坛后台管理-----全局配置-优化设置,把相应的版块选上勾,这样伪静态就成功开启了。
如果是独立主机就更简单了,可以直接把相应的rewrite规则代码考到apache 的httpd.conf文件里即可。如下:
<IfModule mod_rewrite.c>
</IfModule>