logo NodeSeekbeta

在netcup的webhosting1000上搓的小博客和主题 (记录下小坑)

运行在webhosting1000上-开启rewrite

效果可见 https://tof.cloudns.ch/tech/webhosting1000-rewrite.html 主题抄来的 准备晚点整理下发布;鸣谢作者;
能符合typecho 1.3的简洁主题我看没多少。

--正文--

Netcup 的 Webhosting 1000 默认采用的是 Nginx 反向代理 + Apache 的标准混合架构,原生支持 Apache 的 mod_rewrite 模块,可以直接通过 .htaccess 文件实现伪静态(Rewrite)。

打开和开启 Typecho 伪静态(隐藏地址中的 index.php)只需要以下两个步骤:


第一步:在 Typecho 后台开启 Rewrite

  1. 登录 Typecho 博客后台。
  2. 进入 设置 (Settings) -> 永久链接 (Permalink)。
  3. 在“是否启用地址重写功能”选项中选择 是。
  4. 注意:首次开启时,Typecho 会进行环境检测。如果系统提示 "重写功能检测失败,请检查服务器配置",直接勾选下方出现的 “如果你能确认重写原生支持,请强制满足此条件”,然后点击 保存设置 即可。

第二步:在 Plesk 中配置 .htaccess 规则

开启后台选项后,你需要确保网站根目录下有一个标准的 .htaccess 规则文件:

  1. 登录 Plesk 控制面板,进入 Files(文件管理器)。
  2. 进入 Typecho 所在的网站根目录(例如 /httpdocs 或 /blog.yourdomain.com)。
  3. 检查目录下是否存在 .htaccess 文件(注意:如果以 . 开头的文件被隐藏,可在文件管理器右上角的设置中勾选“显示隐藏文件”)。
  • 如果存在:点击编辑该文件。
  • 如果不存在:点击 New -> Create File,新建一个名为 .htaccess 的文件。
  1. 将以下伪静态重写规则复制并粘贴进去,保存文件:
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /

    # 强制将 HTTP 请求重定向到 HTTPS
    RewriteCond %{HTTPS} off
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

    # Typecho 伪静态规则 —— 不用 PATH_INFO
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
</IfModule>

提示:如果你将 Typecho 安装在了子目录(例如 yourdomain.com/blog/),需要将上面代码中的 RewriteBase / 修改为 RewriteBase /blog/,将 /index.php [L] 修改为 /blog/index.php [L]。


验证与排查

保存配置后,去前台刷新博客,点击任意一篇文章。如果 URL 变成了 https://yourdomain.com/action.html 且能正常打开,说明伪静态已成功生效!

如果在打开文章时出现 404 Not Found 或 500 Error:

  1. 请检查 Plesk 的 Apache & Nginx Settings 页面,确保没有手动禁用 rewrite 模块。
  2. 检查 .htaccess 文件名的拼写(注意开头的圆点 . 不能漏掉)。

补充精简后的config.inc.php

<?php
// site root path
define('__TYPECHO_ROOT_DIR__', dirname(__FILE__));

// plugin directory (relative path)
define('__TYPECHO_PLUGIN_DIR__', '/usr/plugins');

// theme directory (relative path)
define('__TYPECHO_THEME_DIR__', '/usr/themes');

// admin directory (relative path)
define('__TYPECHO_ADMIN_DIR__', '/admin/');

// register autoload
require_once __TYPECHO_ROOT_DIR__ . '/var/Typecho/Common.php';

// init
\Typecho\Common::init();

//ADMIN-zaoz
//debug-off
define('__TYPECHO_DEBUG__', false);

// config db
$db = new \Typecho\Db('Pdo_Mysql', 'typecho_');
$db->addServer(array (
  'host' => '10.244.x.x',
  'port' => 3306,
  'user' => 'mysql-user',
  'password' => 'your-mysql-password',
  'charset' => 'utf8mb4',
  'database' => 'k26xxx_typecho',
), \Typecho\Db::READ | \Typecho\Db::WRITE);
\Typecho\Db::set($db);

/** 强制 Typecho 全站使用 HTTPS */
define('__TYPECHO_SECURE__', true);

附上netcup上的nginx设置

屏幕截图_20261004_123046.png

建议调整 Plesk 中的 Apache & Nginx Settings:

Typecho 是一个高度依赖 PHP 动态处理的系统。最稳妥的方式是让 Nginx 尽可能地“放权”给 Apache 和 PHP-FPM。
Typecho几乎都是静态页,非常小巧,系统搞的复杂收益不明显。而避免经典的 反向代理缓存或请求转发截断问题 则很重要。

请在 Plesk 的 Apache & Nginx Settings 页面进行以下配置:

  1. 保留 Proxy mode:
    Proxy mode 请保持 勾选(开启)。
    这确保了 Nginx 依然作为前端接受请求,并将动态请求传递给 Apache。如果关掉,你将失去 Apache 的 .htaccess 伪静态能力。

  2. 关闭 Smart static files processing: 避免 Nginx 误伤动态伪静态请求.
    建议将 Smart static files processing 设置为 取消勾选(关闭)。
    由于 Typecho 使用了伪静态规则(所有的请求最终都导向 index.php),有时 Nginx 的“智能处理”会误判路由,导致一些带有特殊参数的后台提交被拦截。

  3. 调整 Serve static files directly by nginx: 精准放行真正的静态资源,不包含 PHP.
    Serve static files directly by nginx 请保持 勾选(开启)。
    但请仔细检查下方的文件扩展名列表。确保该列表中**绝对不能包含 php、html** 这类可能用于动态输出的格式。默认的有--手动删除
    一般只保留 ac3 avi bmp bz2 css cue dat doc docx ... 等纯静态文件即可。

  4. 检查并禁用 Nginx 缓存: 避免 Nginx 缓存了过期的后台页面.
    在同一个设置页面往下滚动,找到 Enable nginx caching(如果 Plesk 版本有显示此选项)。
    取消勾选(关闭)。


调整后,请务必执行以下两步:

  1. 保存 Plesk 设置后,等待约 1-5 分钟让服务器重载 Nginx 配置。(netcup说最长5分钟)
  2. 在你的浏览器中彻底清除缓存,或使用无痕模式重新登录 Typecho 后台,刷新检查。

你好啊,陌生人!

我的朋友,看起来你是新来的,如果想参与到讨论中,点击下面的按钮!

📈用户数目📈

目前论坛共有72272位seeker

🎉欢迎新用户🎉