Estoy tratando de crear una página de destino con enlaces a sitios web de php de demostración como la siguiente:
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... y así
Estoy usando Nginx en el servidor Debian 9
Mi /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 }Mis estructuras de Directorios
/var/www |__tony-projects |__infinitywebservices |__demos |__ index.php (Landing page for demos.infinitywebservices.tn/) |__ demo1 (Laravel Project) |__ demo2 ... | |.....PD
.htaccess en los proyectos Laravel demo1 y demo2 Por ahora , solo me funciona la página de inicio cuando intento visitar un subproyecto como https://demos.infinitywebservices.tn/demo1/public/ (Ver: https://demos.infinitywebservices.tn/laravel-test/public )
Sin embargo, para https://demos.infinitywebservices.tn/laravel-test/public/test (existe prueba de ruta), 404 Not Found nginx/1.10.3
¿Qué me estoy perdiendo aquí?
En lugar de responder con un estado 404, debe pasar todos los URI desconocidos al controlador de la aplicación (por ejemplo /laravel-test/public/index.php ).
Si tiene varias aplicaciones con una estructura de directorios bien definida, probablemente querrá usar una expresión regular para extraer el nombre de la aplicación (por ejemplo laravel-test ) para que se use el controlador correcto.
Por ejemplo:
location / { try_files $uri $uri/ @rewrite; } location @rewrite { rewrite ^(/[^/]+/public) $1/index.php last; }