# ==============================================================================
#  .htaccess RAIZ DEL PROYECTO LARAVEL - VALIDO PARA XAMPP LOCAL / PHP 8.2
#  URL local:  http://localhost/app_api_farmater_new/
#
#  Si te aparece CODIGO FUENTE PHP o se DESCARGA el archivo:
#   -> 1) Confirma que en httpd-xampp.conf este cargado el modulo php_module
#         y que existe el archivo c:\xamppPHP8_2\php\php8apache2_4.dll
#   -> 2) Reinicia Apache desde XAMPP Control Panel
#   -> 3) Abre primero:  http://localhost/app_api_farmater_new/local_test_php.php
# ==============================================================================

# ==============================================================================
#  1) HANDLERS PHP - PRIMERO el de XAMPP (application/x-httpd-php), luego
#     los de hosting por si este archivo se sube por error a produccion
# ==============================================================================
<IfModule mod_mime.c>
    # Handler XAMPP Windows (el UNICO que existe en tu XAMPP local)
    AddHandler application/x-httpd-php .php
    AddType text/html .php

    # Handlers adicionales compatibles con hosting cPanel/Hostinger (solo si existen)
    AddHandler application/x-httpd-ea-php82 .php
    AddHandler application/x-httpd-alt-php82___lsphp .php
    AddHandler application/x-httpd-php82 .php
</IfModule>

# SetHandler solo cuando estamos SEGUROS de que el módulo PHP está cargado
# en XAMPP local usamos mod_php (php_module).
<IfModule php_module>
    <FilesMatch "\.(php|phtml)$">
        SetHandler application/x-httpd-php
    </FilesMatch>
</IfModule>

# SetHandler para LiteSpeed lsphp (hosting compartido)
<IfModule lsapi_module>
    <FilesMatch "\.php$">
        SetHandler application/x-httpd-alt-php82___lsphp
    </FilesMatch>
</IfModule>

# SetHandler para FPM/FastCGI con fcgid
<IfModule mod_fcgid.c>
    AddHandler fcgid-script .php
    FCGIWrapper /usr/local/cpanel/cgi-sys/ea-php82 .php
    Options +ExecCGI
</IfModule>

# ==============================================================================
#  2) OPCIONES GENERALES
# ==============================================================================
<IfModule mod_negotiation.c>
    Options -MultiViews -Indexes
</IfModule>
Options +FollowSymLinks
DirectoryIndex index.php index.html

# ==============================================================================
#  3) REGLAS REWRITE
# ==============================================================================
<IfModule mod_rewrite.c>
    RewriteEngine On

    # 🚨 Para local XAMPP el proyecto NO ESTA en la raiz,
    #   esta en /app_api_farmater_new/
    #   Si tienes ALIAS o VirtualHost apuntando DIRECTO a la carpeta,
    #   cambia esto por RewriteBase /
    RewriteBase /app_api_farmater_new/

    # CORS permisible en local (no bloquees nada mientras desarrollas)
    <IfModule mod_headers.c>
        Header always set Access-Control-Allow-Origin "*"
        Header always set Access-Control-Allow-Credentials "true"
        Header always set Access-Control-Allow-Methods "GET, POST, PUT, PATCH, DELETE, OPTIONS, HEAD"
        Header always set Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept, Authorization, X-CSRF-TOKEN"
        Header always set Access-Control-Max-Age 1728000
    </IfModule>

    # OPTIONS preflight (CORS)  -> 204 No Content
    RewriteCond %{REQUEST_METHOD} =OPTIONS
    RewriteRule ^.*$ - [R=204,NC,L]

    # Header Authorization para JWT (algunos servidores lo limpian)
    RewriteCond %{HTTP:Authorization} .
    RewriteRule ^ - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    # Bloquear acceso directo a archivos sensibles
    RewriteRule ^(\.env(\..+)?|\.git.*|artisan|phpunit\.xml|composer\.(json|lock)|package.*\.json)$ - [F,L,NC]
    RewriteRule ^(app|bootstrap|config|database|resources|routes|storage|tests|vendor|node_modules)(/.*)?$ - [F,L,NC]
    RewriteRule \.(env|log|sql|bak|phps|phar|pem|key|ini|sh|htaccess|htpasswd)$ - [F,L,NC]

    # ==========================================================================
    # 4) Assets DENTRO DE public/  -> si el archivo existe, servirlo directo
    # ==========================================================================
    RewriteCond %{REQUEST_URI} !^/app_api_farmater_new/(index|local_test_php|diagnostico_api|info)\.php$ [NC]
    RewriteCond %{DOCUMENT_ROOT}/app_api_farmater_new/public%{REQUEST_URI} -f [OR]
    RewriteCond %{DOCUMENT_ROOT}/app_api_farmater_new/public%{REQUEST_URI} -d
    RewriteRule ^(.*)$ public/$1 [L,QSA]

    # ==========================================================================
    # 5) Front controller -> todo lo demas va a index.php (nuestro front controller
    #    que corrige el REQUEST_URI para ROUTE_API_PREFIX)
    # ==========================================================================
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php [L,QSA]

    # Raiz del proyecto -> index.php
    RewriteRule ^$ index.php [L,QSA]
</IfModule>

# ==============================================================================
#  4) Ajustes PHP solo si mod_php esta cargado (XAMPP local).
#     En hosting cPanel con FPM se tomara de .user.ini
# ==============================================================================
<IfModule mod_php.c>
    php_flag display_errors On
    php_flag log_errors On
    php_flag html_errors On
    php_value memory_limit 256M
    php_value max_execution_time 300
    php_value upload_max_filesize 32M
    php_value post_max_size 64M
    php_value max_input_vars 3000
    php_value date.timezone "America/Mexico_City"
    php_flag zlib.output_compression Off
</IfModule>

AddDefaultCharset UTF-8
ServerSignature Off
