最近搭建一个Discuz 论坛,在搭建过程中遇到了一个比较棘手问题,在设置Discuz 论坛url静态化后论坛不能正常访问,总是返回找不到页面。
在参考了官方Discuz 论坛URL静态化设置的FAQ后重新设置,但问题依旧,开始还以为是租用的空间的问题,联系空间商得知可能是由于我论坛的 .htaccess文件有问题。
.htaccess是什么?
Unix、Linux系统或者是任何版本的Apache Web服务器都是支持.htaccess的,但是有的主机服务商可能不允许你自定义自己的.htaccess文件。国内的大多数虚拟主机就没有这个功能。我所知道的提供这个功能的有康盛世纪(就是Discuz的论坛服务商)。
启用.htaccess,需要修改httpd.conf,启用AllowOverride,并可以用AllowOverride限制特定命令的使用。如果需要使用.htaccess以外的其他文件名,可以用AccessFileName指令来改变。例如,需要使用.config ,则可以在服务器配置文件中按以下方法配置:AccessFileName .config 。
笼统地说,.htaccess可以帮我们实现包括:文件夹密码保护、用户自动重定向、自定义错误页面、改变你的文件扩展名、封禁特定IP地址的用户、只允许特定IP地址的用户、禁止目录列表,以及使用其他文件作为index文件等一些功能。
Discuz 论坛URL静态化 .htaccess设置
下面是discuz官方给出的.htaccess设置规则,除了论坛目录地址需要修改,其他的不动。
# 将 RewriteEngine 模式打开 RewriteEngine On # 修改以下语句中的 /discuz 为你的论坛目录地址,如果程序放在根目录中,请将 /discuz 修改为 / RewriteBase /discuz # Rewrite 系统规则请勿修改 RewriteRule ^archiver/((fid|tid)-[\w\-]+\.html)$ archiver/index.php?$1 RewriteRule ^forum-([0-9]+)-([0-9]+)\.html$ forumdisplay.php?fid=$1&page=$2 RewriteRule ^thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ viewthread.php?tid=$1&extra=page\%3D$3&page=$2 RewriteRule ^space-(username|uid)-(.+)\.html$ space.php?$1=$2 RewriteRule ^tag-(.+)\.html$ tag.php?name=$1
这里要重点说明一下,因为我就是在设置 .htaccess文件时犯的错误:
1.在编辑 .htaccess文件时不能直接用记事本编辑,而应该用写字板或其他编辑器来编辑。
2.在论坛目录设置的时候要特别注意,RewriteBase /discuz 这里是指论坛目录,也就是你论坛主页存放的目录,而且 .htaccess这个文件也必须放在这个目录下面。
以上是我在URL静态化设置过程中遇到的问题,希望对遇到同样问题的朋友有所帮助。附:官方Discuz URL静态化应用FAQ
“Discuz 论坛URL静态化设置”上的5条回复
Discuz 论坛玩过一点!
哈,我以前都是玩PW的论坛程序,DZ的倒是没用过。
老规矩,来了就给你点广告。
有兴趣的可以看看 可别把我点死了! 🙄
方法不行,车讯天地www.72283.com,无法实现
我也是设置静态化后,点击页面都自动跳转到首页地址,怎么回事?