Next.js 16 static export + PHP 8 API for cPanel/Apache hosting. - Location-aware campus finder (IP estimate, optional precise location, ZIP search) - Three-step Plan Your Visit form with separate email/SMS consent - PHP API: validation, anti-spam, rate limiting, SQLite lead store, Mailchimp and Sinch Engage adapters, idempotent retries via cron - Attribution capture (utm_*, gclid/gbraid/wbraid, fbclid, ttclid, twclid) and consent-aware analytics hooks - Vitest and PHP test suites, cPanel deployment script and docs Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
20 lines
625 B
ApacheConf
20 lines
625 B
ApacheConf
# /api — PHP endpoints. Everything under lib/, cron/, config/ and data/ is private.
|
|
<IfModule mod_rewrite.c>
|
|
RewriteEngine On
|
|
RewriteRule ^(lib|cron|config|data)(/|$) - [F,L]
|
|
</IfModule>
|
|
|
|
# Belt and braces for servers without mod_rewrite
|
|
<FilesMatch "^(bootstrap|Config|Log|Db|Http|Campuses|Phone|Validator|RateLimit|Turnstile|GeoIp|Geocode|Mailchimp|Sinch|LeadProcessor)\.php$">
|
|
Require all denied
|
|
</FilesMatch>
|
|
<FilesMatch "\.(json|sqlite|sqlite-wal|sqlite-shm|log|lock|env)$">
|
|
Require all denied
|
|
</FilesMatch>
|
|
|
|
<IfModule mod_headers.c>
|
|
Header set X-Content-Type-Options "nosniff"
|
|
</IfModule>
|
|
|
|
Options -Indexes
|