首页 > 解决方案 > .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 结构,以确保一切正常。

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

任何有关使这项工作的帮助将不胜感激!

标签: regex.htaccessxenforo

解决方案


测试一下!

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

RewriteEngine On.htaccess文件中添加以下代码


推荐阅读