Rewriterule 从旧论坛永久移至新论坛
Rewriterule moved permanently from an old forum to new forum
有没有办法在 .htaccess 中放置一个小的重写规则,以将超过 20.000 links 从旧的基于 phpBB 的论坛重定向到新的 phpBB 论坛?
旧的link是这样的:
https://example.com/t123456-some-title
新的link是这样的:
https://example.com/forum/viewtopic.php?t=123456
t-123456
是旧版论坛主题编号的可变编号,编号相同但有viewtopic.php?t=123456
我认为可以使用一些正则表达式,但我不知道如何实现。
可能是这样的:
RewriteEngine On
RewriteBase /
RewriteRule ^t-([0-9]+)-([a-zA-Z0-9-]+)$ /forum/viewtopic.php?t= [R,L]
非常感谢@MrWhite,重写规则完美无缺。
RewriteRule ^t(\d+) /forum/viewtopic.php?t= [R=301,L]
RewriteRule ^t-([0-9]+)-([a-zA-Z0-9-]+)$ /forum/viewtopic.php?t= [R,L]
几乎,除了 substitution 字符串中的 </code> 反向引用(引用第二个捕获子组)将包含 <code>some-title
,而不是 123456
.
您似乎不需要捕获 title,因此您可以从第二组中删除周围的括号。事实上,如果您完全丢弃 title 那么您可能根本不需要匹配它,除非它会导致与其他 URL 发生冲突?您只对 id.
感兴趣
这最终应该是 301(永久)重定向,但是,它目前是 302(临时)重定向(默认)。因此,在您测试它按预期工作后,将 R
更改为 R=301
。
例如:
RewriteRule ^t-(\d+) /forum/viewtopic.php?t= [R=301,L]
这匹配 开始 /t-<number>
并重定向到 /forum/viewtopic.php?t=<number>
的任何 URL
UPDATE: Sorry, I was mistaken, the old URL is like t123456
without the hyphen
然后只需删除 RewriteRule
模式 中的连字符。 IE。 ^t(\d+)
有没有办法在 .htaccess 中放置一个小的重写规则,以将超过 20.000 links 从旧的基于 phpBB 的论坛重定向到新的 phpBB 论坛? 旧的link是这样的:
https://example.com/t123456-some-title
新的link是这样的:
https://example.com/forum/viewtopic.php?t=123456
t-123456
是旧版论坛主题编号的可变编号,编号相同但有viewtopic.php?t=123456
我认为可以使用一些正则表达式,但我不知道如何实现。
可能是这样的:
RewriteEngine On
RewriteBase /
RewriteRule ^t-([0-9]+)-([a-zA-Z0-9-]+)$ /forum/viewtopic.php?t= [R,L]
非常感谢@MrWhite,重写规则完美无缺。
RewriteRule ^t(\d+) /forum/viewtopic.php?t= [R=301,L]
RewriteRule ^t-([0-9]+)-([a-zA-Z0-9-]+)$ /forum/viewtopic.php?t= [R,L]
几乎,除了 substitution 字符串中的 </code> 反向引用(引用第二个捕获子组)将包含 <code>some-title
,而不是 123456
.
您似乎不需要捕获 title,因此您可以从第二组中删除周围的括号。事实上,如果您完全丢弃 title 那么您可能根本不需要匹配它,除非它会导致与其他 URL 发生冲突?您只对 id.
感兴趣这最终应该是 301(永久)重定向,但是,它目前是 302(临时)重定向(默认)。因此,在您测试它按预期工作后,将 R
更改为 R=301
。
例如:
RewriteRule ^t-(\d+) /forum/viewtopic.php?t= [R=301,L]
这匹配 开始 /t-<number>
并重定向到 /forum/viewtopic.php?t=<number>
UPDATE: Sorry, I was mistaken, the old URL is like
t123456
without the hyphen
然后只需删除 RewriteRule
模式 中的连字符。 IE。 ^t(\d+)