我们目前正在升级我们的网站论坛软件,需要将所有旧的论坛线程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
下面添加此代码