Domain Migration
This guide helps you move your Botble CMS website to a new domain, subdomain, or server. It is written for all users, including those without technical experience. Most steps use your hosting control panel (cPanel, DirectAdmin, Plesk, etc.) — no command line required.
Before You Start
Important
Your license is tied to your domain. You must deactivate it before migrating.
1. Deactivate Your License
- Log in to your Admin Panel
- Go to Settings → General
- Click Deactivate License
- You will reactivate it on the new domain later
If you forget this step, you can reset your license at https://license.botble.com.
2. Create a Full Backup
Using the Admin Panel (recommended):
- Go to Admin Panel → System Administration → Backups
- Click Create
- Download the backup file to your computer — do not skip this step
Using your hosting panel:
Most hosting panels (cPanel, DirectAdmin, Plesk) have a Backup or Backup Wizard tool. Use it to create a full backup that includes both files and database. Download it to your computer for safekeeping.
3. Write Down Your Current Settings
Before migrating, take note of:
- Your active theme name
- Which plugins are activated
- Any third-party integrations (payment gateways, email services, analytics, etc.)
Migration Guide (Step by Step)
Step 1: Set Up Hosting for the New Domain
- Purchase or set up hosting for your new domain
- Make sure the hosting meets these requirements:
- PHP 8.3 or higher
- MySQL 8.0+ or MariaDB 10.3+
- Point your new domain's DNS to the new hosting server (your hosting provider can help with this)
Step 2: Upload Your Website Files
Option A: Using hosting panel File Manager
- On your old hosting, go to File Manager
- Select all files in your website's root folder (usually
public_html) - Compress them into a ZIP file
- Download the ZIP file to your computer
- On your new hosting, go to File Manager
- Navigate to the website root folder (usually
public_html) - Upload the ZIP file
- Extract it
Option B: Using hosting panel Backup & Restore
Some hosting panels let you restore a full backup directly. If your new hosting uses the same panel (e.g., both use cPanel), you may be able to restore your full backup from Step 2 directly.
Step 3: Move Your Database
Export from old hosting:
- On your old hosting, open phpMyAdmin (found in your hosting panel)
- Select your website's database from the left sidebar
- Click the Export tab
- Keep the default settings (Quick export, SQL format)
- Click Go — a
.sqlfile will download to your computer
Import to new hosting:
- On your new hosting, create a new database and a database user (use the MySQL Databases tool in your hosting panel)
- Open phpMyAdmin on the new hosting
- Select the new empty database from the left sidebar
- Click the Import tab
- Choose the
.sqlfile you downloaded - Click Go
TIP
If your database file is too large for phpMyAdmin, ask your hosting provider for help or use the Import feature in your hosting panel's backup tool.
Step 4: Update the .env Configuration File
The .env file is in your website's root folder. Edit it using File Manager in your hosting panel:
- Open File Manager → navigate to your website root
- Find the
.envfile and click Edit - Update these lines:
APP_URL=https://your-new-domain.com
DB_DATABASE=your_new_database_name
DB_USERNAME=your_new_database_user
DB_PASSWORD=your_new_database_password- Look for a
FORCE_ROOT_URLline. If it exists and is not commented out, either update it to the new domain or comment it out by putting#in front:
#FORCE_ROOT_URL=https://your-old-domain.com- Save the file
Links still pointing to the old domain?
FORCE_ROOT_URL forces every link on the site to a fixed address, so it overrides APP_URL. If you leave it set to the old domain, your homepage opens fine (you typed the new address yourself) but every menu item and link sends visitors back to the old domain. Older installs had this line written automatically, so always check for it.
Only keep FORCE_ROOT_URL set if your site runs in a subfolder (for example https://example.com/my-site) or you need it to fix an SSL issue - in that case point it at the new address.
Step 5: Update Old Domain URLs in the Database
Your database may still contain references to your old domain (in page content, settings, etc.). You need to replace them.
Option A (simpler): Find/Replace in the SQL file before importing
If you have not imported the database yet, this is the easiest way:
- Open the exported
.sqlfile from Step 3 in a text editor (VS Code, Sublime Text, Notepad++, or any code editor) - Use Find & Replace (Ctrl+H / Cmd+H) to replace
old-domain.comwithnew-domain.com - Save the file
- Import the modified
.sqlfile in phpMyAdmin (Step 3)
This avoids running multiple SQL queries and is recommended for non-technical users.
WARNING
For very large .sql files (>100 MB), basic text editors may struggle. Use VS Code or Sublime Text, or fall back to Option B.
Option B: Run SQL queries after import (phpMyAdmin)
- Open phpMyAdmin on your new hosting
- Select your database
- Click the SQL tab
- Run these queries one at a time (replace
old-domain.comandnew-domain.comwith your actual domains):
UPDATE settings SET value = REPLACE(value, 'old-domain.com', 'new-domain.com')
WHERE value LIKE '%old-domain.com%';UPDATE media_files SET url = REPLACE(url, 'old-domain.com', 'new-domain.com')
WHERE url LIKE '%old-domain.com%';UPDATE pages SET content = REPLACE(content, 'old-domain.com', 'new-domain.com')
WHERE content LIKE '%old-domain.com%';UPDATE posts SET content = REPLACE(content, 'old-domain.com', 'new-domain.com')
WHERE content LIKE '%old-domain.com%';UPDATE meta_box_metas SET meta_value = REPLACE(meta_value, 'old-domain.com', 'new-domain.com')
WHERE meta_value LIKE '%old-domain.com%';- Click Go after each query
TIP
If your old site used http:// and your new site uses https://, also replace http://old-domain.com with https://new-domain.com.
Step 6: Enable SSL (HTTPS)
Most hosting panels offer free SSL certificates:
- In your hosting panel, look for SSL/TLS, Let's Encrypt, or Security section
- Enable or install a free SSL certificate for your new domain
- Make sure
APP_URLin your.envfile starts withhttps:// - Also add this line to
.envif not already present:
ENABLE_HTTPS_SUPPORT=trueStep 7: Clear the Cache
After migration, you need to clear cached data:
- Visit
https://your-new-domain.com/admin - Go to System Administration → Cache Management (if available)
- Click Clear All Cache
If the admin panel doesn't load, try deleting the cache files manually:
- Open File Manager in your hosting panel
- Navigate to
bootstrap/cache/ - Delete all files inside this folder (do not delete the folder itself)
- Navigate to
storage/framework/cache/ - Delete all files inside this folder too
Step 8: Activate Your License
- Go to Admin Panel → Settings → General
- Enter your purchase code
- Click Activate
If activation fails:
- Go to https://license.botble.com
- Reset your license
- Try activating again
After Migration: Verify Everything Works
Check the following on your new site:
- [ ] Homepage loads correctly
- [ ] Admin panel is accessible
- [ ] All pages and posts display properly
- [ ] Images and media files show up
- [ ] Forms work (contact form, login, etc.)
- [ ] Email notifications are sent
Update External Services
If you use any of these, update your domain in their settings:
- Google Analytics / Google Search Console
- Social media accounts (Facebook, Twitter, etc.)
- Payment gateways (PayPal, Stripe, etc.)
- Email services (Mailchimp, SendGrid, etc.)
Migrating from a Subfolder to the Root Domain
If you built your site inside a subfolder (e.g. https://example.com/new-web/public/) and now want to publish it on the root domain (e.g. https://example.com/), the process is the same as a regular migration with two differences:
- The hosting and database are usually the same — only files location and the document root change
- The URL pattern to replace is
example.com/subfolder/public→example.com(not old-domain → new-domain)
Steps:
- Deactivate the license at Admin → Settings → General → License so you can re-activate after the move.
- Backup files and database as described in Before You Start.
- Open the exported
.sqlfile in a text editor and find/replaceexample.com/subfolder/publicwithexample.com. Save the file. - Move the files from the subfolder to the document root (e.g.
public_html/). - Point the document root to the
publicfolder of the moved site so the live URL becomeshttps://example.com/(without/public). See the shared hosting installation guide for instructions. - Import the modified
.sqlfile into the same (or a new) database. - Edit
.env: setAPP_URL=https://example.comand update the database credentials if they changed. Also comment outFORCE_ROOT_URL(put#in front) - a subfolder install has it set to the old subfolder address, and it overridesAPP_URL. - Clear the cache at Admin → Platform Administration → Cache Management → Clear all caches.
- Re-activate the license at Admin → Settings → General → License.
TIP
Keep the old subfolder online until the new root domain is verified working. Only delete the subfolder once everything is confirmed.
Alternative: Fresh Install Method
If you prefer to start clean instead of moving your old site:
- Install Botble CMS on your new domain using the installation guide
- Activate your license
- Install the same plugins
- Manually recreate your content, or export/import your pages and posts through the admin panel
This method is simpler but requires you to reconfigure all settings, menus, widgets, and theme options.
Troubleshooting
Links Still Go to the Old Domain
The homepage opens on the new domain, but clicking any menu item or link goes back to the old one.
- Open
.envand check theFORCE_ROOT_URLline. If it is set to the old domain, comment it out with#or change it to the new domain, then save. See Step 4. - Delete all
.phpfiles inside thebootstrap/cachefolder and everything insidestorage/framework/cache/data. The main menu is cached, so old links survive until that cache is cleared. - If a few individual links are still wrong, they are stored in your content - run the URL replacement from Step 5 and check Admin → Appearance → Menus for custom links using the full old address.
Images Not Showing
- Check that the
storage/app/publicfolder was uploaded correctly - In File Manager, check if
public/storageexists and points tostorage/app/public. If not, ask your hosting provider to create a symbolic link (symlink).
500 Internal Server Error
- Check that
.envhas correct database credentials - Make sure
storage/andbootstrap/cache/folders have write permissions (set to755or775via File Manager → Permissions) - Open
storage/logs/laravel.login File Manager to see the error details
Mixed Content Warnings (HTTP/HTTPS)
- Make sure
APP_URLin.envuseshttps:// - Add
ENABLE_HTTPS_SUPPORT=trueto.env - Run the URL replacement queries from Step 5
License Activation Failed
- Deactivate the license on the old domain (if still accessible)
- Reset your license at https://license.botble.com
- Clear your browser cache
- Try again
Database Connection Error
- Double-check
DB_DATABASE,DB_USERNAME, andDB_PASSWORDin.env - Make sure the database user has all privileges on the database (check in your hosting panel under MySQL Databases)
If Something Goes Wrong
Don't panic! You have your backup from Step 2.
- Restore files from your backup using your hosting panel's Backup tool or File Manager
- Restore the database using phpMyAdmin (import your backup
.sqlfile) - Update
.envback to your old domain settings - Reactivate the license on your old domain
TIP
For help with domain migration, contact our support team at [email protected] or create a ticket at https://botble.ticksy.com.
