使用 mod_rewrite 将 WordPress 页面替换为静态文件的最佳方法

使用 mod_rewrite 将 WordPress 页面替换为静态文件的最佳方法

情况如下:我有一个旧的 WordPress 安装,我想将其存档为静态文件,但我还想保留旧的 URL。我已经创建了静态存档并wget整理了文件名和链接。现在我想配置 Apache 以拦截对旧动态 URL 的请求并将其替换为新的静态 URL,例如:

http://www.example.org/log/?p=1234

或者

http://www.example.org/log/index.php?p=1234

应该重定向到

http://www.example.org/log/archives/1234.html

我尝试将以下内容添加到VirtualHost配置中example.org,但没有效果——我只得到了 PHP 页面。

RewriteCond %{REQUEST_URI} /log/
RewriteCond %{QUERY_STRING} p=([^&;]*)
RewriteRule ^/$ http://%{SERVER_NAME}/log/archives/%1.html [R,L]

我已启用日志记录,可以看到其他规则似乎正在应用,但看不到这个规则。我对匹配模式的其他猜测似乎%{REQUEST_URI}也没有任何效果(loglog/log.*甚至.*)。

我是新手mod_rewrite,这主要是货物崇拜,所以我很确定我搞错了。有人知道我应该在这里做什么吗?

答案1

尝试更改RewriteRule ^/$RewriteRule ^/log/*$

事实上,你的规则永远不会匹配任何东西,因为

RewriteCond %{REQUEST_URI} /log/

/log/声明URL 必须包含

RewriteRule ^/$...

只会/完全匹配——即顶级目录。

相关内容