运行在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
- 登录 Typecho 博客后台。
- 进入 设置 (Settings) -> 永久链接 (Permalink)。
- 在“是否启用地址重写功能”选项中选择 是。
- 注意:首次开启时,Typecho 会进行环境检测。如果系统提示 "重写功能检测失败,请检查服务器配置",直接勾选下方出现的 “如果你能确认重写原生支持,请强制满足此条件”,然后点击 保存设置 即可。
第二步:在 Plesk 中配置 .htaccess 规则
开启后台选项后,你需要确保网站根目录下有一个标准的 .htaccess 规则文件:
- 登录 Plesk 控制面板,进入 Files(文件管理器)。
- 进入 Typecho 所在的网站根目录(例如
/httpdocs或/blog.yourdomain.com)。 - 检查目录下是否存在
.htaccess文件(注意:如果以.开头的文件被隐藏,可在文件管理器右上角的设置中勾选“显示隐藏文件”)。
- 如果存在:点击编辑该文件。
- 如果不存在:点击 New -> Create File,新建一个名为
.htaccess的文件。
- 将以下伪静态重写规则复制并粘贴进去,保存文件:
<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:
- 请检查 Plesk 的 Apache & Nginx Settings 页面,确保没有手动禁用 rewrite 模块。
- 检查
.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设置

建议调整 Plesk 中的 Apache & Nginx Settings:
Typecho 是一个高度依赖 PHP 动态处理的系统。最稳妥的方式是让 Nginx 尽可能地“放权”给 Apache 和 PHP-FPM。
Typecho几乎都是静态页,非常小巧,系统搞的复杂收益不明显。而避免经典的 反向代理缓存或请求转发截断问题 则很重要。
请在 Plesk 的 Apache & Nginx Settings 页面进行以下配置:
-
保留 Proxy mode:
Proxy mode 请保持 勾选(开启)。
这确保了 Nginx 依然作为前端接受请求,并将动态请求传递给 Apache。如果关掉,你将失去 Apache 的.htaccess伪静态能力。 -
关闭 Smart static files processing: 避免 Nginx 误伤动态伪静态请求.
建议将 Smart static files processing 设置为 取消勾选(关闭)。
由于 Typecho 使用了伪静态规则(所有的请求最终都导向index.php),有时 Nginx 的“智能处理”会误判路由,导致一些带有特殊参数的后台提交被拦截。 -
调整 Serve static files directly by nginx: 精准放行真正的静态资源,不包含 PHP.
Serve static files directly by nginx 请保持 勾选(开启)。
但请仔细检查下方的文件扩展名列表。确保该列表中**绝对不能包含php、html**这类可能用于动态输出的格式。默认的有--手动删除
一般只保留ac3 avi bmp bz2 css cue dat doc docx ...等纯静态文件即可。 -
检查并禁用 Nginx 缓存: 避免 Nginx 缓存了过期的后台页面.
在同一个设置页面往下滚动,找到 Enable nginx caching(如果 Plesk 版本有显示此选项)。
取消勾选(关闭)。
调整后,请务必执行以下两步:
- 保存 Plesk 设置后,等待约 1-5 分钟让服务器重载 Nginx 配置。(netcup说最长5分钟)
- 在你的浏览器中彻底清除缓存,或使用无痕模式重新登录 Typecho 后台,刷新检查。
mark