通过.htaccess从URL中删除".html"以获取WordPress网站

chr*_*s m 7 apache wordpress .htaccess joomla

背景资料:

我搜索了stackoverflow的特定解决方案,找不到一个能解决我问题的方法.提前感谢您提供的任何帮助.感谢您的知识.

我决定接受一份合同,将Joomla网站(用客户的话说)转换成WordPress网站.一切都顺利进行,除了Joomla网站链接到.html文件,包括导航和100多个帖子的内容.

我没有逐个浏览每个帖子并更新链接或运行SQL命令以从URL中删除".html",而是决定对.htaccess施加压力,我对此感到有点舒服.


我想做什么↓

在WordPress中,我启用了自定义固定链接,它如下所示:/%category%/%postname%

以下是帖子中网址之一的示例:

http://the-site.com/category/the-webpage.html
Run Code Online (Sandbox Code Playgroud)

我需要htaccess文件告诉网络服务器删除.html,以便用户在访问" http://the-site.com/the-webpage.html "之后被发送到:

http://the-site.com/category/the-webpage
Run Code Online (Sandbox Code Playgroud)

我正在设置页面存根以遵循Joomla页面的文件名,因此http://the-site.com/category/the-webpage将起作用.


我的问题:

您是否可以帮助我找到有人访问网站时从URL中删除.html的解决方案,即使服务器上不存在HTML文件?


以下是我进行更改之前.htaccess文件的外观:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Run Code Online (Sandbox Code Playgroud)

这是截至东部时间下午5:35的最新.htaccess文件:

# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} \.html$
RewriteRule ^(.*)\.html$ $1 [R=301,L]

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
Run Code Online (Sandbox Code Playgroud)

↑最新的.htaccess改变了工作.谢谢蒂姆!

Tim*_*one 13

这将强制外部重定向到您的新网址,但这可能不适合您的情况.我仍然在想是否有办法保持重定向内部并更新WordPress用来确定要提供哪个页面的变量,但到目前为止我还没有想到任何可行的方法.

整个.htaccess:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} \.html$
RewriteRule ^(.*)\.html$ $1 [R=301,L]

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
Run Code Online (Sandbox Code Playgroud)