XF 1.1 vbseo links to xenforo

Jake Bunce

XenForo moderator
Staff member
I assume the source and target ids are the same?

For this example:


Add this after RewriteEngine On in the .htaccess file in the web root:

RewriteRule ^[^/]+/([0-9]+)-[^\.]+\.html$ /threads/$1/? [R=301,L]

For this example:


Add this after RewriteEngine On in the .htaccess file in the web root:

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

Jake Bunce

XenForo moderator
Staff member

Assuming the ids are the same, and assuming XenForo is installed where vB once was (in the web root)...

Place these rules in the .htaccess file in your web root, at the top of the existing .htaccess file in the case of XenForo's own .htaccess:

RewriteEngine On

RewriteRule ^threads/([0-9]+)-[^\.]+\.html$ /threads/$1/? [R=301,L]
RewriteRule ^forums/([0-9]+)-[^\.]+\.html$ /forums/$1/? [R=301,L]


Well-known member
Could you please help me with this one:

http://www.domain.com/forum/subforumname_without_an_id/thread_title-id.html (vb3.8 with vbseo and custom rules)
http://www.domain.com/forum/threads/thread_title.id/ (xf 1.2.2)

Is there a way from:

EDIT: got this one:

RewriteRule ^forumname$ /forum/forums/forumname.115/ [R=301,L]
RewriteRule ^forumname/$ /forum/forums/forumname.115/ [R=301,L]

Needed both, because of the trailing slash. So quite some work...

Thanks alot!!!
Last edited by a moderator:


Well-known member
RewriteRule ^[^/]+/([0-9]+)-[^\.]+\.html$ /threads/$1/? [R=301,L]

What do i have to modify here when the id is before the .html?

For example:


and not




Active member
Sorry to bring back this thread, I could use some help myself with some .htaccess rules :)

I am doing a test migration (so far) from VB4 to XF. The migration itself worked OK, even if we're talking a big forum, but I need to make sure the URLs work properly.
We're using VBSEO in the old forum (setting 1, if I'm not mistaken).

Here is what my URLs should look like:
CATEGORY: ../forum/bank-america-home-loans/
THREAD: ../forum/bank-america-home-loans/88397-run-around-hamp-boa-bayview.html

The VB install is in the /forum/ directory.

Now my Xenforo install is in the /xf/ directory and my current URLs look like this:
CATEGORY: ../xf/forums/bank-of-america-home-loans.90/ (I need to lose the red text)
THREAD: ../xf/threads/run-around-on-hamp-from-boa-bayview.88397/ (in this case I need to lose the /threads/ bit, have the category display in the link, the ID moved before the 'wording' and also end in an .html

How should I edit my .htaccess?

Currently it looks like this:

#Mod_security can interfere with uploading of content such as attachments. If you
#cannot attach files, remove the "#" from the lines below.
#<IfModule mod_security.c>
#SecFilterEngine Off
#SecFilterScanPOST Off

ErrorDocument 401 default
ErrorDocument 403 default
ErrorDocument 404 default
ErrorDocument 500 default

<IfModule mod_rewrite.c>
   RewriteEngine On

   #   If you are having problems with the rewrite rules, remove the "#" from the
   #   line that begins "RewriteBase" below. You will also have to change the path
   #   of the rewrite to reflect the path to your XenForo installation.
   #RewriteBase /xenforo

   #   This line may be needed to enable WebDAV editing with PHP as a CGI.
   #RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

   RewriteCond %{REQUEST_FILENAME} -f [OR]
   RewriteCond %{REQUEST_FILENAME} -l [OR]
   RewriteCond %{REQUEST_FILENAME} -d
   RewriteRule ^.*$ - [NC,L]
   RewriteRule ^(data/|js/|styles/|install/|favicon\.ico|crossdomain\.xml|robots\.txt) - [NC,L]
   RewriteRule ^.*$ index.php [NC,L]
   RewriteRule ^[^/]+/([0-9]+)-[^\.]+\.html$ /threads/$1/? [R=301,L]
Thank you for your support ;)


XenForo developer
Staff member
Just to clarify, .htaccess modifications are for redirecting old URLs. Adjusting XF URLs is a whole different beast. Aside from what you can do with route filters, you would need code modifications to change the URLs further.

Any redirects you want to add should go above the "RewriteCond %{REQUEST_FILENAME} -f [OR]" line.