设为首页收藏本站

 找回密码
 立即注册

只需一步,快速开始

搜索
热搜: Discuz WordPress
查看: 1046|回复: 0

终于搞定Discuz的urlrewrite问题

[复制链接]
  • TA的每日心情
    可爱
    2025-4-9 10:15
  • 发表于 2025-1-6 12:36:31 | 显示全部楼层 |阅读模式 来自 福建泉州
    自从使用了 CPH的LAMP服务器之后,我就开始在上面试验一些php+mysql应用,其中首先弄的就是discuz了。

    安装了discuz6.0.0之后,基本上运行正常,但是一个最重要的功能urlrewrite一直搞不定,直到今天在本地弄xampp才无意之中发现了问题所在。

    和wordpress不一样,当你在discuz后台选择使用url静态化之后,并不会自动生成相应的.htaccess文件,而是指导你“相应规则请参考《用户使用说明书》的高级使用部分”。
    google一下知道这个 Discuz! 用户使用说明书,然后找到高级应用里面的url静态化: http://www.discuz.net/usersguide/advanced_urlrewrite.htm

    按照discuz所说的,对于Apache Web Server(虚拟主机用户),应该进行如下操作:

    引用内容
    检 查论坛所在目录中是否存在 .htaccess 文件,如果不存在,请手工建立此文件。Win32 系统下,无法直接建立 .htaccess 文件,您可以从其他系统中拷贝一份,或者在 Discuz.net 技术支持栏目中下载此文件。编辑并修改 .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 文件上传到论坛所在的目录中。然后进入论坛系统设置的搜索引擎优化,根据需要开启 URL 静态化功能。

    我这样做了之后不但没有效果,而且连论坛都访问不了,提示HTTP500错误。

    今天在本地安装了xampp之后,装了discuz,重新按照上面的方法测试,还是不行,然后又安装了wordpress并成功使用了urlrewrite。
    打开wordpress自动生成的.htaccess文件和discuz的来比较,终于看出来问题:
    程序代码
    # BEGIN WordPress
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /wordpress/
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /wordpress/index.php [L]
    </IfModule>
    # END WordPress


    很明显,discuz官方的资料少了两行:
    程序代码
    <IfModule mod_rewrite.c>
    </IfModule>


    按照wordpress的加上去,在本地和CPH服务器上都成功了。
    我对.htaccess文件不是很懂,完全是自己尝试出来的,补充几点:
    首先是<IfModule mod_rewrite.c></IfModule>不能少,这大概是判断mod_rewrite是否存在的。
    其次是RewriteEngine On这个应该是Rewrite引擎打开,也不能少。
    然后是RewriteBase /这个很重要,如果安装在根目录就保持这样,如果不是,就要把/替换成所在的目录,相对于web根目录。
    例如你把discuz安装在 http://127.0.0.1/bbs,那么就要写成RewriteBase /bbs/才可以,这样也方便了多个rewrite共存。
    最后是.htaccess文件的位置,如果你的根目录下有bbs和wordpress两个目录对应 http://127.0.0.1/bbshttp://127.0.0.1/wordpress,那么可以分别创建两个.htaccess文件放在这两个目录里。
    例如我是这样的:
    程序代码
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /wordpress/
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /wordpress/index.php [L]
    </IfModule>


    程序代码
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /bbs/
    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
    </IfModule>


    注意加粗部分哦。

    文章来源:网络



    草根般深入探索与分享,就在我的菜园。
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    亲爱的,赶快加入我们吧!
    X
    获取帮助
    X

    客服咨询

    菜心哥 旺旺客服

    微博收听

    鹭彩星微博

    工作时间

    8:30 - 23:00

    QQ|Archiver|手机版|小黑屋|老菜心 ( 闽ICP备16022933号-1 )|网站地图

    GMT+8, 2025-5-10 07:04 , Processed in 0.025708 second(s), 31 queries .

    Powered by Lucaixing! X3.5 Licensed

    © 2001-2025 Discuz! Team.

    快速回复 返回顶部 返回列表