创建.htaccess重定向规则,删除从根目录而非子目录提供的文件的扩展名



我想重定向根目录中的所有.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,但只有在确认它有效之后(以避免潜在的缓存问题)。

最新更新