nativemind / module-multidomain
Multi-domain to Store View mapping for Magento 2
Package info
github.com/libsPHP/module-multidomain
Type:magento2-module
pkg:composer/nativemind/module-multidomain
Requires
- php: >=8.1
- magento/framework: >=103.0.0
- magento/module-backend: >=102.0.0
- magento/module-store: >=101.0.0
This package is not auto-updated.
Last update: 2026-03-31 02:31:41 UTC
README
Magento 2 module for mapping multiple domains to different Store Views. Manage domain-to-store mappings via Admin Panel without modifying code.
Features
- Admin UI for CRUD operations on domain mappings (Stores > MultiDomain Mappings)
- Configuration stored in PHP file for maximum performance (no DB queries on page load)
- Magento Plugin architecture — no core file modifications
- Fallback to default Magento behavior for unconfigured domains
- ACL permissions for admin access control
- Debug mode with logging
Requirements
- Magento 2.4.x
- PHP 8.1+
Installation
Manual Installation
-
Copy module to Magento:
cp -r app/code/NativeMind /path/to/magento/app/code/
-
Enable and install:
bin/magento module:enable NativeMind_MultiDomain bin/magento setup:upgrade bin/magento cache:clean
Composer Installation
composer require nativemind/module-multidomain bin/magento setup:upgrade bin/magento cache:clean
Configuration
Step 1: Configure Base URLs in Magento (Required)
Important: This module only handles routing domains to Store Views. You must manually configure Base URLs for each Store View in Magento settings.
Go to Stores > Configuration > General > Web and for each Store View set:
- Base URL:
https://your-domain.com/ - Base Link URL:
https://your-domain.com/ - Secure Base URL:
https://your-domain.com/ - Secure Base Link URL:
https://your-domain.com/
The plugin does not modify default URL paths — it only resolves which Store View to load based on the incoming domain.
Step 2: Add Domain Mappings
- Go to Stores > MultiDomain Mappings
- Click Add New Domain
- Enter domain (e.g.,
ru.example.com) and select Store View - Save
Configuration is stored in app/etc/nativemind_multidomain.php:
<?php return [ 'domains' => [ 'example.com' => 'default', 'ru.example.com' => 'view_ru', 'de.example.com' => 'view_de', ], 'default_store' => 'default', 'debug_mode' => false, ];
How It Works
The module uses a Magento Plugin on Magento\Store\Model\StoreResolver::getCurrentStoreId():
- Plugin intercepts store resolution
- Reads
HTTP_HOSTfrom request - Looks up domain in configuration
- Returns corresponding Store ID or falls back to default Magento behavior
No index.php modification required.
Web Server Configuration
Ensure your web server routes all domains to the same Magento installation.
Nginx Example
server { listen 80; server_name example.com ru.example.com de.example.com; root /var/www/magento/pub; # ... standard Magento nginx config ... }
Apache Example
<VirtualHost *:80> ServerName example.com ServerAlias ru.example.com de.example.com DocumentRoot /var/www/magento/pub # ... standard Magento apache config ... </VirtualHost>
Troubleshooting
Domain not resolving to correct Store View
- Check
app/etc/nativemind_multidomain.phpexists and contains your domain - Verify Store View code is correct and store is active
- Enable debug mode and check
var/log/system.log:// In app/etc/nativemind_multidomain.php 'debug_mode' => true,
- Clear cache:
bin/magento cache:clean
Permission errors when saving
Ensure app/etc/ directory is writable by web server:
chmod 775 app/etc/ chown www-data:www-data app/etc/
Uninstallation
bin/magento module:disable NativeMind_MultiDomain bin/magento setup:upgrade rm -rf app/code/NativeMind/MultiDomain rm -f app/etc/nativemind_multidomain.php bin/magento cache:clean
License
This module is licensed under NativeMindNONC License.
- Free for non-commercial use: Educational institutions, personal learning, non-commercial research
- Commercial use requires license: Contact copyright holder for commercial licensing
See LICENSE for full terms.
Support
For issues and feature requests, please use the GitHub issue tracker.
Copyright 2010-2025 NativeMind. All rights reserved.