优选小栈

BadouCMS 如何设置伪静态

晨瑞 发布于

一、配置背景与目的

本文档适配BaDouCMS在宝塔面板「站点编辑-伪静态」功能,同时提供Nginx、Apache、IIS三种主流服务器的手动配置方案,覆盖不同部署环境需求。

二、宝塔面板傻瓜式配置步骤(推荐)

若使用宝塔面板管理服务器,可直接通过可视化操作完成配置,无需手动编写配置文件:

  1. 登录宝塔面板后台,在左侧导航栏找到「网站」模块,点击对应需要配置的项目站点后的「设置」;

  2. 在弹出的站点设置窗口中,切换到「伪静态」选项卡;

  3. 在伪静态规则下拉列表中,直接选择「ThinkPHP」选项;

  4. 点击「保存」按钮,宝塔面板会自动根据当前服务器环境(Nginx/Apache)配置对应的URL重写规则,配置立即生效。

三、手动配置方案(非宝塔面板/自定义需求)

若未使用宝塔面板,或需要自定义重写规则,可根据当前服务器环境(Nginx/Apache/IIS)参考以下手动配置步骤:

3.1 Nginx服务器配置

需在Nginx虚拟主机的 location / 配置块中添加重写规则,具体操作:

  1. 登录服务器,找到对应站点的Nginx配置文件(通常路径:/www/server/nginx/conf/vhost/站点域名.conf);

  2. 编辑配置文件,在 location / { ... } 块内添加以下规则(若已有其他代码,保留并插入规则):

location / {
    # 省略原有其他配置代码
    if (!-e $request_filename) {
        rewrite  ^(.*)$  /index.php?s=/$1  last;
        break;
    }
}
  1. 保存配置文件后,重启Nginx服务(命令:service nginx restart 或 宝塔面板内重启Nginx)。

3.2 Apache服务器配置

Apache配置需先启用重写模块,再配置规则文件,步骤如下:

  1. 启用mod_rewrite模块:

    • 找到Apache的主配置文件 httpd.conf(通常路径:/usr/local/apache/conf/httpd.conf 或 宝塔面板「Apache设置-配置文件-主配置文件」);

    • 查找#LoadModule rewrite_module modules/mod_rewrite.so,删除前面的 # 启用模块;

    • 在配置文件中找到 AllowOverride None,将 None 改为 All(允许.htaccess文件生效)。

  2. 创建.htaccess规则文件:

    • 新建文本文件,粘贴以下规则内容;

    • 将文件命名为 .htaccess(注意前面的点不可省略);

    • 将该文件上传至ThinkPHP项目的入口文件(index.php)同级目录下。

<IfModule mod_rewrite.c>
    Options +FollowSymlinks -Multiviews
    RewriteEngine on
    # 排除存在的文件和目录(避免重写静态资源)
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    # 重写规则:将所有非文件/目录请求转发到index.php
    RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L]
</IfModule>
  1. 保存配置并重启Apache服务(命令:service httpd restart 或 宝塔面板内重启Apache)。

3.3 IIS服务器配置

IIS环境需根据版本选择对应配置方案,主要分为「ISAPI_Rewrite配置」和「web.Config配置」两种:

3.3.1 低版本IIS(支持ISAPI_Rewrite)
  1. 新建文本文件,粘贴以下规则内容;

  2. 将文件命名为 httpd.ini;

  3. 将文件上传至ThinkPHP项目根目录。

RewriteRule (.*)$ /index\.php\?s=$1 [I]
3.3.2 高版本IIS(7.0+,支持web.Config)
  1. 找到项目根目录下的 web.Config 文件(若不存在则新建);

  2. - 节点中间,插入以下 节点规则。

<rewrite>
    <rules> 
        <rule name="OrgPage" stopProcessing="true"> 
            <match url="^(.*)$" /> 
            <conditions logicalGrouping="MatchAll"> 
                <add input="{HTTP_HOST}" pattern="^(.*)$" /> 
                <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> 
                <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> 
            </conditions> 
            <action type="Rewrite" url="index.php/{R:1}" / 
        </rule> 
    </rules> 
</rewrite>

四、配置验证与注意事项

4.1 验证方法

配置完成后,访问项目URL:将原本的 http://domain.com/index.php/模块/控制器/方法 改为 http://domain.com/模块/控制器/方法,若能正常访问页面,则配置生效;若出现404错误,说明配置未生效,需检查以下内容

4.2 常见问题排查

  • Nginx:确认配置文件路径正确,重启Nginx后清除浏览器缓存再测试;

  • Apache:确认mod_rewrite模块已启用,.htaccess文件路径正确(与index.php同级),文件编码为UTF-8无BOM;

  • IIS:确认服务器已安装URL重写模块(可在IIS管理器中查看),web.Config/httpd.ini文件权限设置正确;

  • ThinkPHP版本:部分新版本ThinkPHP可能需要调整重写规则中的参数(如 s=/$1 改为 /$1),可参考对应版本的官方手册。

五、参考资料

更多ThinkPHP URL重写的高级用法,可访问ThinkPHP官方手册:https://www.thinkphp.cn/manual BadouCMS手册:https://doc.badoucms.com/