本帖最后由 jason 于 2026-8-5 20:23 编辑
子目录wp博客伪静态,能正常发文,终于成了。
https://junglegazelle.pages-pers ... %e5%8f%91%e6%96%87/
\blog\.htaccess- # 启用 PHP8.5(Free.fr 虚拟主机)
- <ifDefine Free>
- PHP85 1
- # 仅 404:不存在的 URL 交给 WordPress 解析(实现 /%postname%/ 前台访问)
- # 切勿添加 ErrorDocument 405,否则会破坏后台发布
- ErrorDocument 404 /blog/index.php
- </ifDefine>
- # 保护 .htaccess 文件
- <Files .htaccess>
- Order Allow,Deny
- Deny from all
- </Files>
- # 禁用目录列表显示
- Options All -Indexes
- # Free.fr 禁止 mod_rewrite,启用会导致 500 Internal Server Error
- # 以下规则仅供本地测试(非 Free.fr 环境)
- <IfDefine !Free>
- Options +FollowSymlinks -Indexes
- <IfModule mod_rewrite.c>
- RewriteEngine On
- RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
- RewriteBase /blog/
- RewriteRule ^index\.php$ - [L]
- RewriteCond %{REQUEST_FILENAME} !-f
- RewriteCond %{REQUEST_FILENAME} !-d
- RewriteRule . /blog/index.php [L]
- </IfModule>
- </IfDefine>
- # BEGIN WordPress
- # 在「BEGIN WordPress」与「END WordPress」之间的指令(行)是
- # 动态生成的,只应被 WordPress 过滤器修改。
- # 任何对标记之间的指令的修改都会被覆盖。
- # END WordPress
复制代码
\blog\wp-content\mu-plugins\free-fr-compat.php
- <?php
- /**
- * Plugin Name: Free.fr Compatibility
- * Description: 在 Free.fr(无 mod_rewrite)上支持 /%postname%/ 伪静态链接,并修复 REST API 发布。
- */
- // REST API 必须走 index.php?rest_route=,不能走 /wp-json/(Free.fr 上会 404)
- add_filter( 'rest_url', 'free_fr_rest_url', 10, 4 );
- function free_fr_rest_url( $url, $path, $blog_id, $scheme ) {
- return home_url( 'index.php?rest_route=' . $path, $scheme );
- }
- // 阻止 WordPress 认为 mod_rewrite 可用,避免生成 /wp-json/ 地址
- add_filter( 'got_rewrite', '__return_false' );
复制代码 |