<IfModule mod_rewrite.c>
RewriteEngine On

# -------------------------------
# Single 301 redirect
# -------------------------------
Redirect 301 /ebook_volume/3450 https://www.eurekaselect.com/ebook_volume/3727

# -------------------------------
# Force HTTPS + www (Cloudflare-safe)
# -------------------------------
# Only one canonical redirect using X-Forwarded-Proto to prevent loops
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^ https://www.eurekaselect.com%{REQUEST_URI} [L,R=301]

# -------------------------------
# Public folder rewrite (non-recursive)
# -------------------------------
RewriteCond %{REQUEST_URI} !^/public/
RewriteRule ^(.*)$ /public/$1 [L,QSA]

# -------------------------------
# Prevent infinite redirects for certificate validation
# -------------------------------
RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
RewriteRule (.*) https://www.eurekaselect.com/$1 [R=301,L]

</IfModule>

# -------------------------------
# Protect .env file
# -------------------------------
<Files .env>
    order allow,deny
    Deny from all
</Files>

# -------------------------------
# Security Headers
# -------------------------------
Header set Strict-Transport-Security "max-age=31536000" env=HTTPS
Header set Access-Control-Allow-Headers "Content-Type, X-CSRF-TOKEN"

# -------------------------------
# Custom 403 page
# -------------------------------
<Files 403.shtml>
order allow,deny
allow from all
</Files>

# -------------------------------
# Caching
# -------------------------------
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType text/html "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType text/x-javascript "access 1 month"
ExpiresByType text/css "access plus 1 year"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 1 month"
</IfModule>

# -------------------------------
# Headers for JS/CSS
# -------------------------------
<IfModule mod_headers.c>
  <FilesMatch "\.(js|css|xml|gz)$">
    Header append Vary: Accept-Encoding
  </FilesMatch>
</IfModule>

# -------------------------------
# Gzip / Deflate
# -------------------------------
<IfModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file .(html?|txt|css|js|php|pl)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</IfModule>

<IfModule mod_deflate.c>
SetOutputFilter DEFLATE
AddOutputFilterByType DEFLATE text/html text/css text/plain text/xml text/x-js text/js 
</IfModule>

# -------------------------------
# Security Headers (X-Frame, CSP, XSS)
# -------------------------------
<IfModule mod_headers.c>
    Header set X-Frame-Options: SAMEORIGIN
    Header set X-Content-Type-Options "nosniff ALLOW-FROM https://www.benthamscience.com https://beta.benthamscience.com"
    Header set X-XSS-Protection "1; mode=block"
    Header set Content-Security-Policy "default-src 'self' https://www.google.com https://googleads.g.doubleclick.net https://www.gstatic.com https://px.ads.linkedin.com https://wayfinder.openathens.net https://cdn.jsdelivr.net https://www.youtube.com https://bcp.crwdcntrl.net https://l.sharethis.com https://www.google-analytics.com https://ws.sharethis.com https://platform-api.sharethis.com https://analytics.google.com https://t.sharethis.com https://td.doubleclick.net https://metrics-api.dimensions.ai https://badge.dimensions.ai https://rev.trendmd.com https://www.paypal.com https://api.mastercard.com https://ap-gateway.mastercard.com https://www.google.com/ccm/collect https://www.googletagmanager.com/; script-src 'self' 'unsafe-eval' 'unsafe-inline' https://googleads.g.doubleclick.net https://www.gstatic.com  https://px.ads.linkedin.com  https://wayfinder.openathens.net https://cdn.jsdelivr.net https://fonts.googleapis.com https://fontawesome.com https://www.googletagmanager.com https://www.recaptcha.net https://refreshless.com/nouislider/dist/nouislider.js https://ws.sharethis.com https://www.google-analytics.com https://t.sharethis.com https://platform-api.sharethis.com https://buttons-config.sharethis.com https://js.trendmd.com https://badge.dimensions.ai http://ajax.googleapis.com https://cdnjs.cloudflare.com https://www.google.com https://cdn.jsdelivr.net https://www.paypalobjects.com https://www.paypal.com https://api.mastercard.com https://ap-gateway.mastercard.com https://maxcdn.bootstrapcdn.com https://code.jquery.com https://cdn.jsdelivr.net https://snap.licdn.com/li.lms-analytics/insight.min.js; style-src 'self' 'unsafe-inline' https://www.google.com https://googleads.g.doubleclick.net https://www.gstatic.com  https://px.ads.linkedin.com  https://wayfinder.openathens.net https://cdn.jsdelivr.net https://www.gstatic.com https://fonts.googleapis.com https://fontawesome.com https://refreshless.com/nouislider/dist/nouislider.css https://platform-api.sharethis.com https://ws.sharethis.com https://badge.dimensions.ai https://cdnjs.cloudflare.com  https://maxcdn.bootstrapcdn.com https://ap-gateway.mastercard.com; font-src 'self' https://www.google.com https://googleads.g.doubleclick.net https://www.gstatic.com  https://px.ads.linkedin.com https://ap-gateway.mastercard.com https://wayfinder.openathens.net https://cdn.jsdelivr.net https://maxcdn.bootstrapcdn.com https://cdnjs.cloudflare.com https://platform-api.sharethis.com https://ws.sharethis.com https://refreshless.com https://fontawesome.com https://fonts.googleapis.com https://www.gstatic.com https://fonts.gstatic.com https://badge.dimensions.ai data:; img-src 'self' https://www.google.com http://www.scimagojr.com https://googleads.g.doubleclick.net  https://px.ads.linkedin.com  https://ap-gateway.mastercard.com https://wayfinder.openathens.net https://cdn.jsdelivr.net https://sync.sharethis.com https://platform-api.sharethis.com https://platform-cdn.sharethis.com https://www.google.com.pk https://badge.dimensions.ai https://placehold.it https://www.placeholder.com https://via.placeholder.com https://www.googletagmanager.com https://t.paypal.com data:;"
</IfModule>

# BEGIN cPanel-generated php ini directives, do not edit
# Manual editing of this file may result in unexpected behavior.
# To make changes to this file, use the cPanel MultiPHP INI Editor (Home >> Software >> MultiPHP INI Editor)
# For more information, read our documentation (https://go.cpanel.net/EA4ModifyINI)
<IfModule php8_module>
   php_flag display_errors On
   php_value max_execution_time 120
   php_value max_input_time 120
   php_value max_input_vars 6000
   php_value memory_limit 4096M
   php_value post_max_size 200M
   php_value session.gc_maxlifetime 1440
   php_value session.save_path "/var/cpanel/php/sessions/ea-php82"
   php_value upload_max_filesize 200M
   php_flag zlib.output_compression On
   php_value pcre.backtrack_limit 5000000
   php_value pcre.recursion_limit 5000000
</IfModule>
<IfModule lsapi_module>
   php_flag display_errors On
   php_value max_execution_time 120
   php_value max_input_time 120
   php_value max_input_vars 6000
   php_value memory_limit 4096M
   php_value post_max_size 200M
   php_value session.gc_maxlifetime 1440
   php_value session.save_path "/var/cpanel/php/sessions/ea-php82"
   php_value upload_max_filesize 200M
   php_flag zlib.output_compression On
   php_value pcre.backtrack_limit 5000000
   php_value pcre.recursion_limit 5000000
</IfModule>
# END cPanel-generated php ini directives, do not edit

# php -- BEGIN cPanel-generated handler, do not edit
# Set the “ea-php82” package as the default “PHP” programming language.
<IfModule mime_module>
  AddHandler application/x-httpd-ea-php82 .php .php8 .phtml
</IfModule>
# php -- END cPanel-generated handler, do not edit
