Laravel Субдомен с Landing Page и Sub проектами внутри - PullRequest
1 голос
/ 15 апреля 2020

Я пытаюсь создать целевую страницу со ссылками на демоверсию php сайтов, например:

https://demos.infinitywebservices.tn/ : landing page

https://demos.infinitywebservices.tn/demo1/public : takes to demo1 app 
https://demos.infinitywebservices.tn/demo2/public : takes to demo2 app 

... и т. Д.

Я использую Nginx на сервере Debian 9

Мой /etc/nginx/sites-available/infinitywebservices.conf

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    root /var/www/tony-projects/infinitywebservices/demos;
    index index.php index.html index.htm;

    server_name demos.infinitywebservices.tn  www.demos.infinitywebservices.tn;

    gzip on;
    gzip_vary on;
    gzip_disable "msie6";
    gzip_comp_level 6;
    gzip_min_length 1100;
    gzip_buffers 16 8k;
    gzip_proxied any;
    gzip_types
    text/plain
    text/css
    text/js
    text/xml
    text/javascript
    application/javascript
    application/x-javascript
    application/json
    application/xml
    application/xml+rss;     

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
    }

    location ~* \.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm|htc|svg|woff|woff2|ttf)\$ {
                expires 1M;
                access_log off;
                add_header Cache-Control "public";
    }

    location ~* \.(?:css|js)\$ {
                expires 7d;
                access_log off;
                add_header Cache-Control "public";
    }

    ssl_certificate /...; # managed by Certbot
    ssl_certificate_key /...; # managed by Certbot
}

Структура моих каталогов

/var/www
      |__tony-projects
               |__infinitywebservices
                           |__demos
                                |__ index.php (Landing page for demos.infinitywebservices.tn/)
                                |__ demo1 (Laravel Project)
                                |__ demo2 ...
                                |
                                |..... 

PS

  1. В настоящее время я использую конфигурацию .htaccess по умолчанию в demo1 и demo2 Laravel Проекты
  2. На данный момент у меня работает только домашняя страница при попытке чтобы посетить такой подпроект, как https://demos.infinitywebservices.tn/demo1/public/ (см .: https://demos.infinitywebservices.tn/laravel-test/public)

  3. Однако для https://demos.infinitywebservices.tn/laravel-test/public/test (тест маршрута существует) я получаю 404 Not Found nginx/1.10.3

Что мне здесь не хватает?

1 Ответ

1 голос
/ 15 апреля 2020

Вместо ответа со статусом 404 вам нужно передать все неизвестные URI в контроллер приложения (например, /laravel-test/public/index.php).

Если у вас есть несколько приложений с четко определенной структурой каталогов, вы, вероятно, хотите использовать регулярное выражение для извлечения названия приложения (например, laravel-test), чтобы использовать правильный контроллер.

Например:

location / {
    try_files $uri $uri/ @rewrite;
}
location @rewrite {
    rewrite ^(/[^/]+/public) $1/index.php last;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...