Vous migrez de vBulletin vers Discourse et souhaitez rediriger les anciennes URLs vBulletin vers les nouvelles URLs Discourse ? Lisez la suite !
Si l’URL de base de votre ancien forum et de votre nouveau forum est la même, vous devriez plutôt suivre ce tutoriel :
Redirect old forum URLs to new Discourse URLs using permalinks
Dans ce tutoriel, nous supposerons :
-
URL de base vBulletin :
www.example.com/forum -
URL de base Discourse :
forum.example.com -
Serveur Nginx pour
www.example.com
Commençons !
Générer le fichier de mappage Nginx
Pour configurer la redirection des catégories et des sujets, nous utiliserons le module map de Nginx. Le fichier CSV sera généré (script/import_scripts/vb_map.csv) lors de l’importation via la méthode create_permalink_file. Nous collerons le contenu du fichier CSV dans le fichier de mappage sur le serveur.
Exemple de contenu du fichier :
...
/forum/forumdisplay.php?6 http://forum.example.com/c/games;
/forum/forumdisplay.php?7 http://forum.example.com/c/movies;
/forum/forumdisplay.php?13 http://forum.example.com/c/admin;
/forum/showthread.php?1 http://forum.example.com/t/x/22;
/forum/showthread.php?2 http://forum.example.com/t/x/23;
/forum/showthread.php?3 http://forum.example.com/t/x/24;
/forum/showthread.php?4 http://forum.example.com/t/x/25;
...
Copiez l’intégralité du contenu du fichier CSV généré dans etc/nginx/vb_forum.map sur le serveur de www.example.com.
Éditer nginx.conf
Éditez le fichier /etc/nginx/nginx.conf pour ajouter ce code dans le bloc http :
map_hash_bucket_size 128;
map_hash_max_size 80000;
map $request_uri $new {
include /etc/nginx/vb_forum.map;
}
server {
listen 80;
server_name www.example.com;
location ~ ^/forum\\/showthread.php {
if ($args ~* ^(\\d+)-(.+)$) {
set $tid $1;
set $args '';
rewrite ^ /forum/showthread.php?$tid permanent;
}
if ($args ~* ^t=(\\d+)$) {
set $tid $1;
set $args '';
rewrite ^ /forum/showthread.php?$tid permanent;
}
return 301 http://forum.example.com;
}
location ~ ^/forum\\/forumdisplay.php {
if ($args ~* ^(\\d+)-(.+)$) {
set $tid $1;
set $args '';
rewrite ^ /forum/forumdisplay.php?$tid permanent;
}
if ($args ~* ^f=(\\d+)$) {
set $tid $1;
set $args '';
rewrite ^ /forum/forumdisplay.php?$tid permanent;
}
return 301 http://forum.example.com;
}
if ($new) {
rewrite ^ $new permanent;
}
location /forum {
return 301 http://forum.example.com;
}
}
map_hash_max_size doit être ajusté en fonction du nombre d’URLs présentes dans le fichier de mappage.
Vérifier nginx.conf
Vérifiez votre fichier de configuration Nginx :
nginx -c /etc/nginx/nginx.conf -t
Rechargez votre configuration Nginx pour inclure vos modifications :
sudo systemctl reload nginx
Essayez d’accéder à www.example.com/forum, vous devriez maintenant être redirigé vers forum.example.com. ![]()
Les types d’URL suivants seront gérés par la configuration Nginx ci-dessus :
-
www.example.com/forum–\u003eforum.example.com -
www.example.com/forum/forumdisplay.php?6–\u003eforum.example.com/c/games -
www.example.com/forum/forumdisplay.php?6-Games–\u003eforum.example.com/c/games -
www.example.com/forum/forumdisplay.php?f=6–\u003eforum.example.com/c/games -
www.example.com/forum/showthread.php?2–\u003eforum.example.com/t/topic-slug/23 -
www.example.com/forum/showthread.php?2-topic-slug–\u003eforum.example.com/t/topic-slug/23 -
www.example.com/forum/showthread.php?t=2–\u003eforum.example.com/t/topic-slug/23