Я думаю, что Laravel должен работать с маршрутизацией на поддомене , хотя вам понадобятся дублирующие маршруты: один для www и другой для версии без www. Но вы можете использовать одну и ту же функцию для нескольких маршрутов.
Если вы предпочитаете использовать правила переписывания Apache, ознакомьтесь с приведенными ниже инструкциями.
Подготовка к переписыванию правил
В контекстах каталогов (то есть в .htaccess
файлах), RewriteEngine on
должен быть установлен в файле для работы правил перезаписи.
Кроме того, на уровне сервера (т.е. в файле httpd.conf
) должен присутствовать Options FollowSymLinks
.
Блок конфигурации обычно будет выглядеть следующим образом:
<IfModule mod_rewrite.c>
RewriteEngine On
# ... your rewrite rules
</IfModule>
Исправление сбойного условия перезаписи
В Apache RewriteRule
будет выполняться, только если выполнены два RewriteCond
, указанные выше. Взгляните на первое условие перезаписи:
RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$
%{HTTP_HOST}
- это здесь имя хоста маршрута www (здесь admin.example.test
), и оно должно соответствовать шаблону ^[^.]+\.[^.]+$
для выполнения перезаписи. Но регулярное выражение допускает только одну точку в имени хоста. Таким образом, имена хостов с двумя или более точками (то есть subdomain.example.test) не соответствуют регулярному выражению, следовательно, ошибка перезаписи от www.example.test.
Вместо этого вы должны использовать следующее для поддержки поддоменов:
RewriteCond %{HTTP_HOST} ^[^.]+(\.[^.]+)*$
Блок конфигурации находится на правильном [виртуальном] хосте?
Возможно нет. Поскольку вы перенаправляете с веб-сайта на сайт без веб-сайта (возможно, с www.example.test на example.test), RewriteRule
не будет работать, а вместо этого перенаправит на www.www.example.test. Это, вероятно, не то, что вы хотите.
Я думаю, что это решение будет работать:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.[^.]+(\.[^.]+)*$
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://yourhostname%{REQUEST_URI} [L,R=301]
где yourhostname
- имя хоста версии без www. Он проверяет, начинается ли имя хоста с www.
и также совместимо с поддоменами.
И вам даже не нужно перезагружать сервер, поскольку файлы .htaccess читаются при каждом запросе!
Если вам нужна дополнительная помощь