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

时间:2010-06-27 20:22:04

标签: apache wordpress .htaccess joomla

背景资料:

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

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

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


我正在尝试做什么↓

在WordPress中,我启用了自定义永久链接,如下所示:     /%类别%/%postname%

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

http://the-site.com/category/the-webpage.html

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

http://the-site.com/category/the-webpage

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


我的问题:

您是否可以帮助我找到在有人访问网站时从网址中删除.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

以下是下午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

↑最新的.htaccess改变工作。 Thanks Tim!

3 个答案:

答案 0 :(得分: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]

答案 1 :(得分:2)

您想使用网址重写

RewriteEngine On
RewriteRule ^(.*)\.html$ $1

答案 2 :(得分:1)

这应该这样做。它会将对site.com/category/whatever.html的请求重写为site.com/category/whatever。它不应该依赖于所请求的文件。

    <Directory /var/www/category>
        RewriteEngine on
        RewriteRule (.*)\.html$ /category/$1
    </Directory>

这是apache2.conf或虚拟主机文件的格式。不确定是否在.htaccess中使用该命令。最好在服务器conf中处理它,如果可以,因为在服务器启动时只解析一次,并且在每个请求上解析htaccess。