我们目前正在升级我们的站点论坛软件,并且需要将所有旧论坛主题 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 结构,以确保一切正常。
news-and-announcements 中的第一个 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
任何有关使这项工作的帮助将不胜感激!