Jump to content

Recommended Posts

Posted

Hi,

In the process of converting a couple of vBulletin 3.8 forums and have some troubles getting old URLs to redirect (i.e forumdisplay.php, showthread.php, etc).

The conversion itself is successful and all the data is there and everything else is working as intended.

Some potentially relevant notes:
* The converter has both been ran on a fresh 4.4.10 and 4.5.2 installation with the same result
* Friendly URL tab in "System->Settings->Advanced Configuration" in ACP does not list anything related to old VB URLs. Is there any place I can check to see if the redirects are in play, or is that done behind the scenes by the converter?
* This is on a new server and I just moved over the VB database, not the files. Are any of the VB 3.8 files supposed to be in the invision folder to make this work?
* I can see in the database that the converter has inserted the rows that has the redirect info, so it seems to know whats what
* nginx config has the following for the forum section:

    location /forum {
        try_files $uri $uri/ /forum/index.php;
    }

If anyone has some tips or could see what could be wrong here, any help is appreciated!

Thanks!

Posted

You won't see anything related to the old URLs anywhere. They are hard-coded into the converter files. If you are self-hosting, you must install your production environment with the converter files included. That's where the magic happens. You should have no vBulletin files in your web root. Make sure they're all gone. For the conversion, you only need the vBulletin database until the conversion is complete.

If you had any sort of modification installed with vBulletin (think vBSEO), you'll need to handle the redirects back from the rewritten URLs to the out of the box URLs (showthread.php?t=<old thread id>, as an example).

Your IDs in IPS will be completely different from vBulletin, however they will be redirected when someone hits your old URL.

Are you sure your nginx configuration is correct? Unless you are installing IPS at /forum, you should be sending everything to index.php, not forum/index.php.

Posted (edited)

Thank you for your input Paul. After numerous of hours of testing I realised I'm probably asking the wrong questions.

Making a copy of the default forum index.php and renaming it to i.e showforum.php actually made the redirect work, so I guess it's an issue of me misunderstanding what takes priority in the nginx config in the forum location vs the general .php location where fastcgi is set up.

So the question is rather: does anyone have an nginx config with php-fpm they are using , or if anyone can see if there's anything that can be done with the current config to fix this? Worst case scenario I can just create copies of index.php to all the different names i need VB redirects from, but would prefer to have it the proper way.

 

server {
    listen  443 ssl;

    server_name sitename;

    ssl_certificate         /etc/nginx/ssl/sitename.pem; 
    ssl_certificate_key     /etc/nginx/ssl/sitename.key; 

    root  /home/username/chroot/public_html;
    index  index.php;

    auth_basic           "Test";
    auth_basic_user_file /home/username/.htpasswd;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ [^/]\.php(/|$) {	
        #if (!-f $document_root$fastcgi_script_name) {
            #return 404;
        #}

        fastcgi_split_path_info ^(.+?\.php)(/.*)$;
        fastcgi_pass unix:/var/run/php7-fpm-username.sock;
        fastcgi_index index.php;

        fastcgi_buffer_size 128k;
        fastcgi_buffers 256 16k;
        fastcgi_busy_buffers_size 256k;
        fastcgi_temp_file_write_size 256k;

        fastcgi_send_timeout 300; #abtest for 502
        fastcgi_read_timeout 300; #abtest for 502

        fastcgi_param HTTP_PROXY ""; # Mitigate https://httpoxy.org/ vulnerabilities
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location /forum {
       #rewrite ^/forum/forumdisplay.php(.*)$ /forum/index.php last; # did not work . threw 404
       try_files $uri $uri/ /forum/index.php;
    }

    error_page  500 502 503 504  /50x.html;
    location = /50x.html {
        root  /usr/share/nginx/html;
    }

    location ~* \.(jpg|jpeg|gif|png|css|js|ico|svg|webp)$ {
        access_log        off;
        log_not_found     off;
        expires           max;
    }
 # ... loads of custom CMS locations after this
}

 

Edited by PJStalls
Posted

PJStalls,

Some questions:

  1. Was vBulletin installed at example.com/forum/ (the singular of forums, with no "S")?
  2. Where are you installing IPS? At example.com/ or example.com/forum/?
  3. Have you made any adjustments to IPS furl.json files?

If your vBulletin URLs were example.com/forum/showthread.php?t=123, and IPS is installed at the root of example.com and you've made no modifications to furl.json files, you'll need an additional redirect rule at the nginx level to redirect /forum requests to /forums (i.e. example.com/forum/showthread.php?t=123 gets redirected to example.com/forums/showthread.php?t=123). IPS uses the plural "forums".

Here's a good guide on nginx & php-fpm. It's a bit dated, but a good starting point.

 

Posted (edited)

1) VB was installed at example.com/forum/, singular form
2) IPS is being installed at example.com/forum/, (same location)
3) No changes has been made in furl.json 

I did check out that guide (thanks for linking it!), but since the site has a custom CMS in the root I think the problem might lie within the ".php" location block. Don't really want to send "every file not found with the php extension" to the IPS index.php since the CMS is a huge part of the site and has tons of scripts in it.

Going to showforum.php does give the server 404 errordoc and not the IPB 404, which is why I was leaning towards this being some issues with the php location block. Perhaps I need to test more and see if it's possible to have two location blocks for php files and just set up fcgi twice. I.e something like

location ~ [^/]forum/\.php(/|$) {
}

location ~ [^/]\.php(/|$) {
}

Edited by PJStalls
Posted

I'd recommend having nothing but IPS files in the folder where your forums live and handling any exceptions through nginx configuration. You'll want to ensure that the forums application is set to the default application within IPS. Everything within forum should point to the index.php in your IPS install.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...