htaccess 到 nginx url 重定向脚本(phpbb 到 xenforo)

Posted

技术标签:

【中文标题】htaccess 到 nginx url 重定向脚本(phpbb 到 xenforo)【英文标题】:htaccess to nginx url redirection script (phpbb to xenforo) 【发布时间】:2020-06-10 08:27:39 【问题描述】:

我有这些 htaccess 规则用于将 phpbb url 重定向到 xenforos 友好的 url

    RewriteCond %QUERY_STRING (^|&)t=([0-9]+)(&|$) [NC]
    RewriteRule ^viewtopic\.php$ /threads/%2/? [L,R=301,NC]

    RewriteCond %QUERY_STRING f=(\d+)$ [NC]
    RewriteRule ^(viewforum\.php|viewtopic\.php)$ /forums/%1/? [L,R=301,NC]

    RewriteCond %QUERY_STRING (^|&)p=([0-9]+)(&|$) [NC]
    RewriteRule ^viewtopic\.php$ /posts/%2/? [L,R=301,NC]

将 phpbb url 重定向到 xenforo 友好的 url,例如

"/viewtopic.php?t=X" will redirect to "/threads/X/" and
"/viewtopic.php?p=X" will redirect to "/posts/X/" 

nginx 中它的等价物是什么?我尝试了在线转换器甚至 Plesk htaccess 到 nginx 规则,但没有运气。

Plesk 输出这个

if ($args ~* "(^|&)t=([0-9]+)(&|$)")
    set $rule_0 1$rule_0;
    set $bref_2 $2;
    set $bref_undefined $undefined;

if ($rule_0 = "1")
    rewrite ^/viewtopic\.php$ /threads/$bref_2/? permanent;

但它不起作用。请帮忙。

【问题讨论】:

见this answer。 【参考方案1】:

xenforo 论坛上的某个人提供了帮助。我编辑了他的脚本以使其工作。这是有效的 Nginx 重写规则

if ($query_string ~* "(^|&)t=([0-9]+)(&|$)")  
rewrite ^/viewtopic\.php$ /threads/$arg_t/? redirect;  

if ($query_string ~* "f=(\d+)$")  
rewrite ^/(viewforum\.php|viewtopic\.php)$ /forums/$arg_f/? redirect;  

if ($query_string ~* "(^|&)p=([0-9]+)(&|$)")  
rewrite ^/viewtopic\.php$ /posts/$arg_p/? redirect;  

【讨论】:

以上是关于htaccess 到 nginx url 重定向脚本(phpbb 到 xenforo)的主要内容,如果未能解决你的问题,请参考以下文章

.htaccess 将文件夹重定向到 url

301 使用 .htaccess 重定向 URL 模式

.htaccess 使用哈希重定向到子域 url

如何仅使用 .htaccess 将所有 url 重定向到 1 个 url

htaccess 重定向到 HTTPS,除了几个 url

使用 .htaccess 将特定 url 重定向到另一个 url