Мы работаем на совместном хостинге и запуске laravel на основном домене, который является example.com
, все работает отлично.
Мы обработали test.example.com
test.example.com, test.example.com
диспетчер поддоменов в cPanel и указав, что это корень документа в /public_html/test
Как только мы посетим test.example.com
мы получим 500 Internal Server Error
Исходный laravel .htaccess –
<IfModule mod_rewrite.c> <IfModule mod_negotiation.c> Options -MultiViews </IfModule> RewriteEngine On # Redirect Trailing Slashes... RewriteRule ^(.*)/$ /$1 [L,R=301] # Handle Front Controller... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] </IfModule>
Мы изменились.
RewriteRule ^ index.php [L]
в
RewriteRule ^ /index.php [L]
Теперь, если мы посетим test.example.com
он перенаправляется на tests.example.com/test
и все работает нормально.
Но мы не уверены, почему он перенаправляет браузер на tests.example.com/test
?
обновленный
После дальнейших исследований мы обнаружили, что.
Если мы удалим эту строку.
RewriteRule ^(.*)/$ /$1 [L,R=301]
Тогда как maindomain, так и субдомен работают отлично. Но нормально ли удалять эту строку.
Короче говоря, мы хотим запустить laravel в основном домене и что-то еще на субдомене.
Вы можете добавить ограничение на test
субдомен.
Кроме того, вам нужно избегать удаления конечной косой черты для папок (иначе: loop -> 500 error).
Тогда ваш htaccess станет
<IfModule mod_rewrite.c> <IfModule mod_negotiation.c> Options -MultiViews </IfModule> RewriteEngine On # Don't touch anything when coming from test subdomain RewriteCond %{HTTP_HOST} ^test\. [NC] RewriteRule ^ - [L] # Redirect Trailing Slashes... RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.+)/$ /$1 [L,R=301] # Handle Front Controller... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ /index.php [L] </IfModule>