情况如下:我有一个旧的 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}
也没有任何效果(log
、log/
、log.*
甚至.*
)。
我是新手mod_rewrite
,这主要是货物崇拜,所以我很确定我搞错了。有人知道我应该在这里做什么吗?
答案1
尝试更改RewriteRule ^/$
为RewriteRule ^/log/*$
事实上,你的规则永远不会匹配任何东西,因为
RewriteCond %{REQUEST_URI} /log/
/log/
声明URL 必须包含
RewriteRule ^/$...
只会/
完全匹配——即顶级目录。