我在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
答案 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。