.htaccess论坛软件迁移后重定向规则



我们目前正在升级我们的网站论坛软件,需要将所有旧的论坛线程URL重定向到新格式。

我们已经尝试了一些方法,但无法实现,因为不同。htaccess重定向规则存在冲突。

旧格式:https://www.example.com/beta/news-and-announcements/1354-thread-name.html

新格式:https://www.example.com/beta/threads/thread-name.1354/

我们希望这些301重定向到新的URL结构,以确保一切正常工作。

第一个URL中的新闻和公告是一个动态的子论坛名称。1354是线程ID——这实际上是唯一需要保留并移动到新URL的位。线程名称-论坛线程名称-只要ID在正确的位置,就会被新的论坛软件重写为正确的。

这是默认的.htaccess mod_rewrite部分:

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^(data/|js/|styles/|install/|favicon.ico|crossdomain.xml|robots.txt) - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

我们已经尝试扩展它,以覆盖像这样的旧URL结构中的一些额外重定向,但它不起作用:

RewriteBase /beta/
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule (.*)/(d*)-(.*).html$ threads/$2 [NC,L]
RewriteRule ^(data/|js/|styles/|install/|favicon.ico|crossdomain.xml|robots.txt) - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

上面的重定向不起作用,而且还以某种方式破坏了AdminCP URL:

https://www.example.com/beta/admin.php

如果能为您提供任何帮助,我们将不胜感激!

测试它!

RewriteRule ^news-and-announcements/(d+)-(.+).html /threads/$2.$1/? [R=301,NC,L]

.htaccess文件上的RewriteEngine On下面添加此代码

最新更新