我们当前正在升级站点论坛软件,需要将所有旧的论坛主题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中的新闻和公告是动态的子论坛名称。 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
在此方面的任何帮助将不胜感激!
答案 0 :(得分:0)
测试!
RewriteRule ^news-and-announcements/(\d+)-(.+).html /threads/$2.$1/? [R=301,NC,L]
将此代码添加到RewriteEngine On
文件的 .htaccess
下