我想重定向根目录中的所有.htm
文档(即www.example.com/page.htm
)以删除扩展名(即www.example.com/page/
),但不重定向子目录中的.htm
文档(即www.example.com/subdir/page.htm
)。
.htaccess
是如何做到这一点的?
在根.htaccess
文件的顶部,在现有WordPress指令之前(即# BEGIN WordPress
之前),尝试以下操作。
# Redirect "/<page>.htm" to "/<page>/"
RewriteRule ^([^./]+).htm$ /$1/ [R=302,L]
您不需要重复RewriteEngine
指令,因为这已经在稍后的WordPress指令中发生了。(RewriteEngine
指令的顺序无关紧要——最后一个实例"获胜"。)
这只会从根目录中的任何请求URL中删除.htm
扩展名,并添加一个尾部斜杠(如您的示例所示)。这也假定<page>
本身不包含点。
请注意,这是一个302(临时)重定向。如果这是永久性的,那么将其更改为301,但只有在确认它有效之后(以避免潜在的缓存问题)。