如何使 viewforum.php?foo=bar 请求提供文件而不是 PHP 代码?

How to make viewforum.php?foo=bar request serve a file instead of a PHP code?

我正在将 phpBB 论坛存档到平面 HTML 文件中,不再使用任何 PHP 代码。 我使用了 wget(参见 How to: Archive a phpBB forum using Wget and preserve styling),现在我有这些 文件 :

如何使 Apache example.com/forum/viewforum.php?f=2&start=25作为文件,而不是作为带有查询字符串的 viewforum.php 请求? 后者明显不行,报404。

我已经尝试过这个 htaccess 但没有成功:

RemoveHandler .php .phtml .php3
RemoveType .php .phtml .php3
php_flag engine off

注意:这是我存档论坛的方式:

wget -m -p -np -R "*sid=*,ucp.php*,memberlist.php*,*mode=viewprofile*,*view=print*,viewonline.php*,search.php*,posting.php*" https://forums.example.com

确实是个有趣的问题!迫使我挖掘许多 Apache 文档。最后解决方案很简单,即转义 ? 以便 Apache 不会将 ? 和之后的部分视为查询字符串。

您可以在站点根目录 .htaccess 中使用此重写规则:

RewriteEngine On

RewriteCond %{REQUEST_URI} ^/forum/viewforum\.php$ [NC]
RewriteCond %{QUERY_STRING} .
RewriteRule ^ %{REQUEST_URI}\%3F%{QUERY_STRING} [L,NC]

PS: \%3F 被转义 ? 所以让 Apache 加载 /forum/viewforum.php?f=2&start=25 作为一个文件。