Vanilla 3.1 est sorti ! plus d'informations ici.

Redirection ancien sujet vers nouveaux phpbb [Réglé]

rogerroger Messages: 35Membre
août 2019 modifié dans Aide Vanilla 3.0
Bonjour,
Je teste toujours la migration de mon forum phpBB vers Vanilla.
Je souhaite maintenant rediriger en 301 les anciennes URL vers les nouvelles de Vanilla.
J'ai installé le plugin Forum Redirector, malheureusement pour moi, il est prévu pour des URL de base de phpBB, et moi, toutes mes URL avaient été modifié avec phpBBSEO. Donc ça ne fonctionne pas.
Les anciennes URL sont du type :
https://www.monsite.com/unsujet-t51787.html
Et je souhaite donc rediriger vers :
https://www.monsite.com/discussion/51787/unsujet
J'ai environ 40.000 sujets, donc je souhaite rediriger dynamiquement ces sujets, et ne pas le faire "à la main" ... :/
J'ai essayé ce code dans mon htaccess :
RewriteRule ^(.+)-t([0-9]+)$ discussion/$2/$1 [R=301,L]
Et ça tombe en 404 ! :(
Une idée de la règle à mettre dans mon htaccess ? :3

Réponses

  • UnkornegloskUnkorneglosk Messages: 42Administrateur
    juillet 2019 modifié
    Hello :D
    Désolé du retard, tu peux utiliser le plugin Forum Redirector. Par contre il faut un peu modifier le htaccess oui (rien de bien méchant).
    Il faut commenter deux lignes du htaccess, sans quoi cela affichera en continu des erreurs 404:
        ####
        # Prevent access to any php script by redirecting the request to /index.php
        # You can add an exception by adding another RewriteCond after this one.
        # Example: RewriteCond %{REQUEST_URI} !^/yourscriptname.php$
        # You can comment out this section if it causes you problems.
        # This is just a nice to have for security purposes.
        ####
        #RewriteCond %{REQUEST_URI} !/index.php$
        #RewriteRule (.+\.php) [E=X_REWRITE:1,E=X_PATH_INFO:/$1,L]
    
    Je te conseille vraiment d'utiliser ForumRedirector car il couvre directement toutes les URL de phpBB avec redirection 301 etc. C'est plus simple que de faire chaque rewriterule à la main ^^
    La réponse qui va trop vite. Donc oui avec phpBBSEO le plugin ne fonctionne pas, voire pour le rendre compatible, où le faire à la main. Par contre il faut quand même modifier le htaccess à la main:
        ####
        # Prevent access to any php script by redirecting the request to /index.php
        # You can add an exception by adding another RewriteCond after this one.
        # Example: RewriteCond %{REQUEST_URI} !^/yourscriptname.php$
        # You can comment out this section if it causes you problems.
        # This is just a nice to have for security purposes.
        ####
        #RewriteCond %{REQUEST_URI} !/index.php$
        #RewriteRule (.+\.php) [E=X_REWRITE:1,E=X_PATH_INFO:/$1,L]
    
    en commentant les deux lignes comme ici.

    EDIT: Ça à l'air d'avoir été un sacré merdier cette extention pour phpBB quand on voit la galère pour certains de revenir à des url normales de phpbb: http://forums.phpbb-fr.com/support-mises-a-jour-conversions-phpbb32/sujet212442.html

    Site internet: unkorneglosk.fr - Twitter: Unkorneglosk

  • UnkornegloskUnkorneglosk Messages: 42Administrateur
    juillet 2019 modifié
    Après quelques tatonements j'ai découvert que ta réécriture n'était pas correcte.
    Voici quatre lignes que j'ai faites pour toi et qui sont fonctionnelles:
        RewriteRule ^/?(.*)-t([0-9]*).html$ discussion/$2/$1 [R=301,L]
        RewriteRule ^/?(.*)-t([0-9]*)-([0-9]*).html$ discussion/$2/$1 [R=301, L]
        RewriteRule ^/?(.*)-f([0-9]*).html$ categories/$2/$1 [R=301,L]  
        RewriteRule ^/?(.*)-f([0-9]*)-([0-9]*).html$ categories/$2/$1 [R=301,L]     
    

    Ce qui ne peut pas fonctionner:
    • La redirection vers les profils des membres (phpBB SEO n'indique pas les pseudos des utilisateurs)
    • La Redirection des pages va donner un 404 (puisque phpBB SEO ne communique pas de numéro de page mais un numéro de sujet ou de réponse où commencer). Pour éviter un 404 j'ai crée une deuxième condition qui redirige vers la première page du forum/sujet.

    Site internet: unkorneglosk.fr - Twitter: Unkorneglosk

  • rogerroger Messages: 35Membre
    Merci. Mais je viens d'essayer et j'ai une erreur 500 internal server error. :anguished:
    J'ai mis ces 4 lignes juste après :
    #RewriteCond %{REQUEST_URI} !/index.php$
    #RewriteRule (.+\.php) [E=X_REWRITE:1,E=X_PATH_INFO:/$1,L]
    
    Est ce qu'il y a un endroit précis pour les mettre ?
  • UnkornegloskUnkorneglosk Messages: 42Administrateur
    juillet 2019 modifié
    Voici mon htaccess:
    # Modified
    # If you modify this file then change the above line to: # Modified
    
    <IfModule mod_rewrite.c>
        RewriteEngine On
    
        ####
        # Certain hosts may require the following line.
        # If vanilla is in a subfolder then you need to specify it after the /.
        # (ex. You put Vanilla in /forum so change the next line to: RewriteBase /forum)
        ####
        #RewriteBase /
    
        # Make sure that / doesn't try to go to index.php without a rewrite :)
        DirectoryIndex disabled
    
        ####
        # Deny access to certain directories that SHOULD NOT be exposed.
        ####
        RewriteRule (^|/)\.git - [L,R=403]
        RewriteRule ^cache/ - [L,R=403]
        RewriteRule ^cgi-bin/ - [L,R=403]
        RewriteRule ^uploads/import/ - [L,R=403]
        RewriteRule ^vendor/ - [L,R=403]
    
    
        ## Redirect from main phpBBSEO urls   
        RewriteRule ^/?(.*)-t([0-9]*).html$ discussion/$2/$1 [R=301,L]
        RewriteRule ^/?(.*)-t([0-9]*)-([0-9]*).html$ discussion/$2/$1 [R=301, L]
        RewriteRule ^/?(.*)-f([0-9]*).html$ categories/$2/$1 [R=301,L]  
        RewriteRule ^/?(.*)-f([0-9]*)-([0-9]*).html$ categories/$2/$1 [R=301,L]      
    
        ####
        # Prevent access to any php script by redirecting the request to /index.php
        # You can add an exception by adding another RewriteCond after this one.
        # Example: RewriteCond %{REQUEST_URI} !^/yourscriptname.php$
        # You can comment out this section if it causes you problems.
        # This is just a nice to have for security purposes.
        ####
        #RewriteCond %{REQUEST_URI} !/index.php$
        #RewriteRule (.+\.php) [E=X_REWRITE:1,E=X_PATH_INFO:/$1,L]
    
    
        ####
        # Redirect any non existing file/directory to /index.php
        ####
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule (.*) index.php [E=X_REWRITE:1,E=X_PATH_INFO:/$1,L]
    
        ####
        # Add the proper X_REWRITE server variable for rewritten requests.
        ####
        RewriteCond %{ENV:REDIRECT_X_REWRITE} .+
        RewriteCond %{ENV:REDIRECT_X_PATH_INFO} (.+)
        RewriteRule ^index\.php - [E=X_REWRITE:1,E=!REDIRECT_X_REWRITE,E=X_PATH_INFO:%1,E=!REDIRECT_X_PATH_INFO,L]
    </IfModule>
    
    <IfModule mod_headers.c>
       <FilesMatch "(?<!embed)\.(css|js|woff|ttf|eot|svg|png|gif|jpeg|jpg|ico|swf)$">
          Header set Cache-Control "max-age=315360000"
          Header set Expires "31 December 2037 23:59:59 GMT"
       </FilesMatch>
    </IfModule>
    
    

    Site internet: unkorneglosk.fr - Twitter: Unkorneglosk

  • rogerroger Messages: 35Membre
    Oui, c'est le même que le mien, mais pas tout à fait dans le même ordre.
    J'ai quand même essayé en copiant collant le tien, et pareil, même erreur 500 ... :(
    Ca vient peut-être de ma version ?
    Ma version est la : Version 3.0.2
  • UnkornegloskUnkorneglosk Messages: 42Administrateur
    La version que j'utilise en t'est est la 3.1 du coup. Mais normalement ça ne change rien a ce niveau là.
    Peut être sur la configuration du serveur ?

    Site internet: unkorneglosk.fr - Twitter: Unkorneglosk

  • rogerroger Messages: 35Membre
    juillet 2019 modifié
    J'ai contacté le support de mon VPS infogéré pour voir s'ils peuvent m'aider ...
    Normalement, c'est pas leur boulot, donc j'espère qu'ils vont me répondre et me proposer une solution ... :(

    [Edit1]voilà ce qu'il y a dans les logs :
    RewriteRule: bad flag delimiters
    
    Et le support me dit de revoir mes lignes ... :/
    J'ai chercher sur Google, mais rien trouvé qui correspond vraiment à mon problème ...

    [Edit2]bon, je progresse ...
    J'ai repris mon premier changement, en ajoutant le .html (comme dans ta ligne), donc avec :
    RewriteRule ^(.+)-t([0-9]+).html$ discussion/$2/$1 [R=301,L]
    
    La page est bien redirigée, mais avec :
    https://www.monsite.com/home/user/public_html/monsite.com/discussion/51787/unsujet
    
    Donc je tombe sur une 404.
    Je continu de tester et chercher ... :)
    Si tu as une idée pour supprimer le /home/user/public_html/monsite.com
  • UnkornegloskUnkorneglosk Messages: 42Administrateur
    août 2019 modifié
    Essaye de supprimer le hastag devant RewriteBase /
    Voir si ça indique bien le bon chemin au serveur. Normalement c'est pas nécessaire :/

    EDIT: Après vérification il y à un problème dans le htacces que j'ai transmis, il y a un espace dans les drapeaux des redirections qui ne devrait pas avoir eu ligne 23:
    # Modified
    # If you modify this file then change the above line to: # Modified
    
    <IfModule mod_rewrite.c>
        RewriteEngine On
    
        ####
        # Certain hosts may require the following line.
        # If vanilla is in a subfolder then you need to specify it after the /.
        # (ex. You put Vanilla in /forum so change the next line to: RewriteBase /forum)
        ####
        #RewriteBase /
    
        # Make sure that / doesn't try to go to index.php without a rewrite :)
        DirectoryIndex disabled
    
        ####
        # Deny access to certain directories that SHOULD NOT be exposed.
        ####
        RewriteRule (^|/)\.git - [L,R=403]
        RewriteRule ^cache/ - [L,R=403]
        RewriteRule ^cgi-bin/ - [L,R=403]
        RewriteRule ^uploads/import/ - [L,R=403]
        RewriteRule ^vendor/ - [L,R=403]
    
        ## Redirect from main phpBBSEO urls   
        RewriteRule ^/?(.*)-t([0-9]*).html$ discussion/$2/$1 [R=301,L]
        RewriteRule ^/?(.*)-t([0-9]*)-([0-9]*).html$ discussion/$2/$1 [R=301, L] à changer en [R=301,L]
        RewriteRule ^/?(.*)-f([0-9]*).html$ categories/$2/$1 [R=301,L]  
        RewriteRule ^/?(.*)-f([0-9]*)-([0-9]*).html$ categories/$2/$1 [R=301,L]    
      
        ####
        # Prevent access to any php script by redirecting the request to /index.php
        # You can add an exception by adding another RewriteCond after this one.
        # Example: RewriteCond %{REQUEST_URI} !^/yourscriptname.php$
        # You can comment out this section if it causes you problems.
        # This is just a nice to have for security purposes.
        ####
        #RewriteCond %{REQUEST_URI} !/index.php$
        #RewriteRule (.+\.php) [E=X_REWRITE:1,E=X_PATH_INFO:/$1,L]
    
        ####
        # Redirect any non existing file/directory to /index.php
        ####
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule (.*) index.php [E=X_REWRITE:1,E=X_PATH_INFO:/$1,L]
    
        ####
        # Add the proper X_REWRITE server variable for rewritten requests.
        ####
        RewriteCond %{ENV:REDIRECT_X_REWRITE} .+
        RewriteCond %{ENV:REDIRECT_X_PATH_INFO} (.+)
        RewriteRule ^index\.php - [E=X_REWRITE:1,E=!REDIRECT_X_REWRITE,E=X_PATH_INFO:%1,E=!REDIRECT_X_PATH_INFO,L]
    </IfModule>
    
    <IfModule mod_headers.c>
       <FilesMatch "(?<!embed)\.(css|js|woff|ttf|eot|svg|png|gif|jpeg|jpg|ico|swf)$">
          Header set Cache-Control "max-age=315360000"
          Header set Expires "31 December 2037 23:59:59 GMT"
       </FilesMatch>
    </IfModule>
    

    Site internet: unkorneglosk.fr - Twitter: Unkorneglosk

  • rogerroger Messages: 35Membre
    Toujours erreur 500 ...
    J'ai essayé aussi sur ma version sur Wamp, et pareil, erreur 500 ...
    J'ai essayé en enlevant le # devant RewriteBase / et en remettant ma ligne mais pas de changement, toujours tout le chemin est ajouté dans l'URL ... :/
    Tu testes sur un hébergement en ligne toi ou sur Wamp ?
    Si tu as une autre idée ?
  • rogerroger Messages: 35Membre
    Merde ! J'y suis arrivé !!!! :3
    Voilà ce qui fonctionne :
    RewriteRule ^(.+)-t([0-9]+).html$ https://%{HTTP_HOST}/discussion/$2/$1 [R=301,L]
    RewriteRule ^(.+)-t([0-9]+)-([0-9]+).html$ https://%{HTTP_HOST}/discussion/$2/$1 [R=301,L]
    RewriteRule ^(.+)-f([0-9]+).html$ https://%{HTTP_HOST}/categories/$2/$1 [R=301,L]  
    RewriteRule ^(.+)-f([0-9]+)-([0-9]+).html$ https://%{HTTP_HOST}/categories/$2/$1 [R=301,L]     
    
    Il ne me restait plus que ça pour passer mon forum phpBB3 en Vanilla !

    Comme quoi, faut jamais abandonner ! :p
  • UnkornegloskUnkorneglosk Messages: 42Administrateur
    En effet je n'y avais pas pensé. Content que ça fonctionne :+1:

    Site internet: unkorneglosk.fr - Twitter: Unkorneglosk

  • rogerroger Messages: 35Membre
    Merci encore à toi pour toute l'aide ! ;)
    Je pense passer mon forum en Vanilla ce week-end, donc je pense encore venir t’embêter pour différentes config que je n'ai pas encore pensé ...
    On ne trouve pas beaucoup de tutos en français pour la config ... :(
  • UnkornegloskUnkorneglosk Messages: 42Administrateur
    Oui, Vanilla est pas très connu niveau francophone ^^

    Site internet: unkorneglosk.fr - Twitter: Unkorneglosk

Connectez-vous ou Inscrivez-vous pour répondre.