[SOLVED] Can't redirect the 'default' page to the main page site.com

How to configure and adapt Aimeos based shops as developer
Forum rules
Always add your Aimeos and PHP version as well as your environment (Linux/Mac/Win)
Spam and unrelated posts will be removed immediately!
User avatar
ЕвгенияСемихова(ИПСемиховаЕ.А.)
Posts: 70
Joined: 11 Jan 2025, 09:45

Re: Can't redirect the 'default' page to the main page site.com

Post by ЕвгенияСемихова(ИПСемиховаЕ.А.) » 29 Jan 2025, 18:14

A whole week of different experiences in the evenings on real and virtual servers (Open Server Panel 6). Dozens of different reinstalls. Lots of read instructions. I even studied the certificate system for an entire subdomain area (hello wildcard WC).
Appeals to AI...
Image

I even posted a task on the freelancers exchange - they tried to help, I gave them access to the test server - but they didn't succeed either.
Image

I'm already desperate. Allow me to reinstall the server, install the Hestia control panel, install apache2, Nginx (PHP-FPM) and MariaDB.
And make changes one step at a time.
---
Question number 1: I have a domen linked to the hosting (timeweb), on the hosting itself, the main second-level domain is linked to the server's ip address.
Now the question itself is: do I need to add the entire zone for third-level domains? In the likeness of "*.site.com "?
Image

Please help me understand where I'm being stupid :roll:
Debian 12, PHP 8.3, Server 1 = Aimeos 2024.10.13, Server 2 = ES 8.17.1
life is full of many new and interesting things

User avatar
ЕвгенияСемихова(ИПСемиховаЕ.А.)
Posts: 70
Joined: 11 Jan 2025, 09:45

Re: Can't redirect the 'default' page to the main page site.com

Post by ЕвгенияСемихова(ИПСемиховаЕ.А.) » 30 Jan 2025, 15:36

My second step is: add "'domain' => '{site}', " to shop.php file:

Code: Select all

<?php

$multishop = $multiroute = [];
$prefix = env( 'SHOP_MULTILOCALE' ) ? '{locale}/' : '';

if( env( 'SHOP_MULTISHOP' ) ) {
	$multishop = ['routes' => [
		'admin' => ['domain' => '{site}', 'prefix' => 'admin', 'middleware' => ['web']],
		'jqadm' => ['domain' => '{site}', 'prefix' => 'admin/{site}/jqadm', 'middleware' => ['web', 'auth', 'verified']],
		'graphql' => ['domain' => '{site}', 'prefix' => 'admin/{site}/graphql', 'middleware' => ['web', 'auth', 'verified']],
		'jsonadm' => ['domain' => '{site}', 'prefix' => 'admin/{site}/jsonadm', 'middleware' => ['web', 'auth', 'verified']],
		'jsonapi' => ['domain' => '{site}', 'prefix' => '{site}/jsonapi', 'middleware' => ['web', 'api']],
		'account' => ['domain' => '{site}', 'prefix' => $prefix . '{site}/profile', 'middleware' => ['web', 'auth', 'verified']],
		'default' => ['domain' => '{site}', 'prefix' => $prefix . '{site}/shop', 'middleware' => ['web']],
		'basket' => ['domain' => '{site}', 'prefix' => $prefix . '{site}/shop', 'middleware' => ['web']],
		'checkout' => ['domain' => '{site}', 'prefix' => $prefix . '{site}/shop', 'middleware' => ['web']],
		'confirm' => ['domain' => '{site}', 'prefix' => $prefix . '{site}/shop', 'middleware' => ['web']],
		'supplier' => ['domain' => '{site}', 'prefix' => $prefix . '{site}/s', 'middleware' => ['web']],
		'page' => ['domain' => '{site}', 'prefix' => $prefix . '{site}/p', 'middleware' => ['web']],
		'home' => ['domain' => '{site}', 'prefix' => $prefix . '{site}', 'middleware' => ['web']],
		'update' => ['domain' => '{site}'],
	] ];
}

if( env( 'SHOP_MULTIROUTE' ) ) {
	$multiroute = [
		'client' => [
			'html' => [
				'catalog' => [
					'multiroute' => true,
					'detail' => [
						'url' => [
							'target' => 'aimeos_resolve',
							'filter' => ['d_name', 'd_prodid', 'd_pos'],
						],
					],
					'lists' => [
						'url' => [
							'target' => 'aimeos_resolve',
							'filter' => [],
						],
					],
					'tree' => [
						'url' => [
							'target' => 'aimeos_resolve',
							'filter' => ['f_name', 'f_catid'],
						],
					],
				],
				'cms' => [
					'page' => [
						'url' => [
							'target' => 'aimeos_resolve',
						],
					],
				]
			]
		]
	];
}

return array_replace_recursive( $multiroute, $multishop + [

	'apc_enabled' => false, // enable for maximum performance if APCu is available
	'apc_prefix' => 'aimeos:', // prefix for caching config and translation in APCu
	'num_formatter' => 'Locale', // locale based number formatter (alternative: "Standard")
	'pcntl_max' => 4, // maximum number of parallel command line processes when starting jobs
	'version' => env( 'APP_VERSION', 1 ), // shop CSS/JS file version
	'roles' => ['admin', 'editor'], // user groups allowed to access the admin backend
	'panel' => 'dashboard', // panel shown in admin backend after login

	'routes' => [
		// Docs: https://aimeos.org/docs/latest/laravel/extend/#custom-routes
		// Multi-sites: https://aimeos.org/docs/latest/laravel/customize/#multiple-shops
		'admin' => ['prefix' => 'admin', 'middleware' => ['web']],
		'jqadm' => ['prefix' => 'admin/{site}/jqadm', 'middleware' => ['web', 'auth']],
		'graphql' => ['prefix' => 'admin/{site}/graphql', 'middleware' => ['web', 'auth']],
		'jsonadm' => ['prefix' => 'admin/{site}/jsonadm', 'middleware' => ['web', 'auth']],
		'jsonapi' => ['prefix' => 'jsonapi', 'middleware' => ['web', 'api']],
		'account' => ['prefix' => $prefix . 'profile', 'middleware' => ['web', 'auth']],
		'default' => ['prefix' => $prefix . 'shop', 'middleware' => ['web']],
		'basket' => ['prefix' => $prefix . 'shop', 'middleware' => ['web']],
		'checkout' => ['prefix' => $prefix . 'shop', 'middleware' => ['web']],
		'confirm' => ['prefix' => $prefix . 'shop', 'middleware' => ['web']],
		'supplier' => ['prefix' => $prefix . 's', 'middleware' => ['web']],
		'page' => ['prefix' => $prefix . 'p', 'middleware' => ['web']],
		'home' => ['prefix' => $prefix, 'middleware' => ['web']],
		'update' => [],
	],

	'page' => [
		// Docs: https://aimeos.org/docs/latest/laravel/extend/#adapt-pages
		'account-index' => [ 'locale/select', 'basket/mini','catalog/tree','catalog/search','account/profile','account/review','account/subscription','account/basket','account/history','account/favorite','account/watch','catalog/session' ],
		'basket-index' => [ 'locale/select', 'catalog/tree','catalog/search','basket/standard','basket/bulk','basket/related' ],
		'catalog-count' => [ 'catalog/count' ],
		'catalog-detail' => [ 'locale/select', 'basket/mini','catalog/tree','catalog/search','catalog/stage','catalog/detail','catalog/session' ],
		'catalog-home' => [ 'locale/select','basket/mini','catalog/tree','catalog/search','catalog/home', 'cms/page' ],
		'catalog-list' => [ 'locale/select','basket/mini','catalog/filter','catalog/tree','catalog/search','catalog/price','catalog/supplier','catalog/attribute','catalog/session','catalog/stage','catalog/lists' ],
		'catalog-session' => [ 'locale/select','basket/mini','catalog/tree','catalog/search','catalog/session' ],
		'catalog-stock' => [ 'catalog/stock' ],
		'catalog-suggest' => [ 'catalog/suggest' ],
		'catalog-tree' => [ 'locale/select','basket/mini','catalog/filter','catalog/tree','catalog/search','catalog/price','catalog/supplier','catalog/attribute','catalog/session','catalog/stage','catalog/lists' ],
		'checkout-confirm' => [ 'catalog/tree','catalog/search','checkout/confirm' ],
		'checkout-index' => [ 'locale/select', 'catalog/tree','catalog/search','checkout/standard' ],
		'checkout-update' => [ 'checkout/update' ],
		'supplier-detail' => [ 'locale/select','basket/mini','catalog/tree','catalog/search','supplier/detail','catalog/lists'],
		'cms' => [ 'basket/mini','catalog/tree','cms/page' ],
	],

	'resource' => [
		'db' => [
			'adapter' => config( 'database.connections.' . config( 'database.default', 'mysql' ) . '.driver', 'mysql' ),
			'host' => config( 'database.connections.' . config( 'database.default', 'mysql' ) . '.host', '127.0.0.1' ),
			'port' => config( 'database.connections.' . config( 'database.default', 'mysql' ) . '.port', '3306' ),
			'socket' => config( 'database.connections.' . config( 'database.default', 'mysql' ) . '.unix_socket', '' ),
			'database' => config( 'database.connections.' . config( 'database.default', 'mysql' ) . '.database', 'forge' ),
			'username' => config( 'database.connections.' . config( 'database.default', 'mysql' ) . '.username', 'forge' ),
			'password' => config( 'database.connections.' . config( 'database.default', 'mysql' ) . '.password', '' ),
			'stmt' => config( 'database.default', 'mysql' ) === 'mysql' ? ["SET SESSION sort_buffer_size=2097144; SET NAMES 'utf8mb4'; SET SESSION sql_mode='ANSI'"] : [],
			'limit' => 3, // maximum number of concurrent database connections
			'defaultTableOptions' => [
				'charset' => config( 'database.connections.' . config( 'database.default', 'mysql' ) . '.charset' ),
				'collate' => config( 'database.connections.' . config( 'database.default', 'mysql' ) . '.collation' ),
			],
			'driverOptions' => config( 'database.connections.' . config( 'database.default', 'mysql' ) . '.options' ),
		],
		'fs' => [
			'adapter' => 'Standard',
			'tempdir' => storage_path( 'tmp' ),
			'basedir' => public_path(),
			'baseurl' => rtrim(env('ASSET_URL', PHP_SAPI == 'cli' ? env('APP_URL') : ''), '/'),
		],
		'fs-media' => [
			'adapter' => 'Standard',
			'tempdir' => storage_path( 'tmp' ),
			'basedir' => public_path( 'aimeos' ),
			'baseurl' => rtrim(env('ASSET_URL', PHP_SAPI == 'cli' ? env('APP_URL') : ''), '/') . '/aimeos',
		],
		'fs-mimeicon' => [
			'adapter' => 'Standard',
			'tempdir' => storage_path( 'tmp' ),
			'basedir' => public_path( 'vendor/shop/mimeicons' ),
			'baseurl' => rtrim(env('ASSET_URL', PHP_SAPI == 'cli' ? env('APP_URL') : ''), '/') . '/vendor/shop/mimeicons',
		],
		'fs-theme' => [
			'adapter' => 'Standard',
			'tempdir' => storage_path( 'tmp' ),
			'basedir' => public_path( 'vendor/shop/themes' ),
			'baseurl' => rtrim(env('ASSET_URL', PHP_SAPI == 'cli' ? env('APP_URL') : ''), '/') . '/vendor/shop/themes',
		],
		'fs-admin' => [
			'adapter' => 'Standard',
			'tempdir' => storage_path( 'tmp' ),
			'basedir' => storage_path( 'admin' ),
		],
		'fs-export' => [
			'adapter' => 'Standard',
			'tempdir' => storage_path( 'tmp' ),
			'basedir' => storage_path( 'export' ),
		],
		'fs-import' => [
			'adapter' => 'Standard',
			'tempdir' => storage_path( 'tmp' ),
			'basedir' => storage_path( 'import' ),
		],
		'fs-secure' => [
			'adapter' => 'Standard',
			'tempdir' => storage_path( 'tmp' ),
			'basedir' => storage_path( 'secure' ),
		],
		'mq' => [
			'adapter' => 'Standard',
			'db' => 'db',
		],
		'email' => [
			'from-email' => config( 'mail.from.address' ),
			'from-name' => config( 'mail.from.name' ),
		],
	],

	'admin' => [
		'jqadm' => [
			'api' => [
				'openai' => [
					'key' => env( 'SHOP_OPENAI_APIKEY' )
				],
				'translate' => [
					'key' => env( 'SHOP_DEEPL_APIKEY' )
				],
				'removebg' => [
					'key' => env( 'SHOP_REMOVEBG_APIKEY' )
				],
			]
		]
	],

	'client' => [
		'html' => [
			'basket' => [
				'cache' => [
					// 'enable' => false, // Disable basket content caching for development
				],
			],
			'common' => [
				'cache' => [
					// 'force' => true // enforce caching for logged in users
				],
			],
			'catalog' => [
				'lists' => [
					'basket-add' => true, // shows add to basket in list views
					// 'infinite-scroll' => true, // load more products in list view
					// 'size' => 48, // number of products per page
				],
				'selection' => [
					'type' => [// how variant attributes are displayed
						'color' => 'radio',
						'length' => 'radio',
						'width' => 'radio',
					],
				],
			],
		],
	],

	'controller' => [
		'frontend' => [
			'catalog' => [
				'levels-always' => 3 // number of category levels for mega menu
			]
		]
	],

	'i18n' => [
		'en' => [
			'client' => [
				'Suppliers' => ['Brands']
			]
		]
	],

	'madmin' => [
		'cache' => [
			'manager' => [
				// 'name' => 'None', // Disable caching for development
			],
		],
		'log' => [
			'manager' => [
				// 'loglevel' => 7, // Enable debug logging into madmin_log table
			],
		],
	],

	'mshop' => [
		'locale' => [
			//'site' => 'kitaidar.ru', // used instead of "default"
		]
	],


	'command' => [
	],

	'frontend' => [
	],

	'backend' => [
	],

] );
After this I have try to open "default.kitaidar.ru", bu now see Hestia's (control panel) index file:
Image

now is better - I know than all 3 level's domains sending to my server's IP. Now need to understand how to resolve all of this ways to needed catalog with aimeos shop.

UPD: did I need to delete HestiaCP and try to work direct with apache? Or can adapt Hestia's config? I know that Hestia have own DNS packet named "BIND9" - can anyone answer: can I use it for my trouble?

UPD_2: can anyone say: why Russian's biggest marketplace (ozon) use URL like "site.com/seller/shop_name-id****/main_item_catalog/" ? Not simple, I think. Hmm, maybe the author of the aimeos software product did not just simple make the default addressing of stores in the catalog after the domain? Maybe this would be a better solution? Please help me decide.
Debian 12, PHP 8.3, Server 1 = Aimeos 2024.10.13, Server 2 = ES 8.17.1
life is full of many new and interesting things

User avatar
aimeos
Administrator
Posts: 8620
Joined: 01 Jan 1970, 00:00

Re: Can't redirect the 'default' page to the main page site.com

Post by aimeos » 30 Jan 2025, 20:38

ЕвгенияСемихова(ИПСемиховаЕ.А.) wrote: 30 Jan 2025, 15:36 UPD: did I need to delete HestiaCP and try to work direct with apache? Or can adapt Hestia's config? I know that Hestia have own DNS packet named "BIND9" - can anyone answer: can I use it for my trouble?
We don't know HestiaCP and the trouble you are having but we recommend a standard setup with Apache/Nginx, PHP-FPM and MySQL/MariaDB.
ЕвгенияСемихова(ИПСемиховаЕ.А.) wrote: 30 Jan 2025, 15:36 UPD_2: can anyone say: why Russian's biggest marketplace (ozon) use URL like "site.com/seller/shop_name-id****/main_item_catalog/" ? Not simple, I think. Hmm, maybe the author of the aimeos software product did not just simple make the default addressing of stores in the catalog after the domain? Maybe this would be a better solution? Please help me decide.
Using the seller as part of the URL path is the standard setup:
yourdomain.com/shop/seller1

Alternative using subdomains:
seller1.yourdomain.com/shop

Alternative using custom domains:
seller1.com/shop

Documentation: https://aimeos.org/docs/latest/laravel/ ... he-routing

Seems like your biggest problems are getting your hosting environment and your DNS settings right.
Professional support and custom implementation are available at Aimeos.com
If you like Aimeos, Image give us a star

User avatar
ЕвгенияСемихова(ИПСемиховаЕ.А.)
Posts: 70
Joined: 11 Jan 2025, 09:45

Re: Can't redirect the 'default' page to the main page site.com

Post by ЕвгенияСемихова(ИПСемиховаЕ.А.) » 31 Jan 2025, 17:08

big thanks for this unical system!!! I win it!
My errors:
1) don't need any Control Panel!!! Yes, it is very simple for every days, but not working right!!!
we recommend a standard setup with Apache/Nginx, PHP-FPM and MySQL/MariaDB.
Yes, you are right!!! Only clear OS by own hand's installin package!

2) I have only add to "shop.php" only recommended "'domain' => '{site}', ", but not cut others {site} includings!!! - it is simple to view, when write command "php artisan route:list" and see at listing!!!
3) need to write at admin panel right url of stores!!! Or write right store's name when add it by artisan comand!
---
So, now all working:
Image
Image

Next step is wildcard SSL for all 3 level subdomains!

I've never felt such pleasure from solving a problem even when I was winning at chess!!! :lol:

UPD: with HestiaCP also work fine, just need to add to aliase "*.site.com":
Image

Image
Debian 12, PHP 8.3, Server 1 = Aimeos 2024.10.13, Server 2 = ES 8.17.1
life is full of many new and interesting things

Post Reply