apache-unified-simple.conf 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <VirtualHost *:80>
  2. ServerName inventory.local
  3. DocumentRoot /var/www/html/frontend/dist
  4. # Enable CORS headers for API requests
  5. Header always set Access-Control-Allow-Origin "*"
  6. Header always set Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS"
  7. Header always set Access-Control-Allow-Headers "Content-Type, Authorization, X-Requested-With"
  8. Header always set Access-Control-Allow-Credentials "true"
  9. # Handle preflight requests
  10. RewriteEngine On
  11. RewriteCond %{REQUEST_METHOD} OPTIONS
  12. RewriteRule ^(.*)$ $1 [R=200,L]
  13. # API routes - handle PHP files in api directory
  14. <Directory "/var/www/html/api">
  15. Options -Indexes +FollowSymLinks
  16. AllowOverride All
  17. Require all granted
  18. # Handle PHP files
  19. <FilesMatch "\.php$">
  20. SetHandler application/x-httpd-php
  21. </FilesMatch>
  22. </Directory>
  23. # Root directory - serve frontend files and handle PHP
  24. <Directory "/var/www/html">
  25. Options -Indexes +FollowSymLinks
  26. AllowOverride All
  27. Require all granted
  28. # Handle PHP files
  29. <FilesMatch "\.php$">
  30. SetHandler application/x-httpd-php
  31. </FilesMatch>
  32. # Vue.js SPA routing - fallback to index.html for non-API, non-PHP requests
  33. RewriteEngine On
  34. RewriteBase /
  35. # Don't rewrite API requests
  36. RewriteCond %{REQUEST_URI} ^/api/
  37. RewriteRule ^ - [L]
  38. # Don't rewrite PHP files
  39. RewriteCond %{REQUEST_URI} \.php$
  40. RewriteRule ^ - [L]
  41. # Don't rewrite existing files/directories
  42. RewriteCond %{REQUEST_FILENAME} -f [OR]
  43. RewriteCond %{REQUEST_FILENAME} -d
  44. RewriteRule ^ - [L]
  45. # Fallback to index.html for Vue.js SPA
  46. RewriteRule . index.html [L]
  47. </Directory>
  48. # Security headers
  49. Header always set X-Content-Type-Options nosniff
  50. Header always set X-Frame-Options DENY
  51. Header always set X-XSS-Protection "1; mode=block"
  52. # Error handling
  53. ErrorLog ${APACHE_LOG_DIR}/error.log
  54. CustomLog ${APACHE_LOG_DIR}/access.log combined
  55. </VirtualHost>